interface A { foo(x: A>) } interface B { foo(x: B>) } var a: A var b: B = a;