interface Foo { x: Foo>; } interface Bar extends Foo { y: string; } function f(p: Foo) { console.log(p); } var v: Bar = null; f(v); // should not error