function foo() { var x: { a: T; b: typeof x; }; return x; } function bar() { var x: { a: T; b: typeof x; }; return x; } var a = foo(); var b = bar(); // Relating types of a and b produces instantiations of the cyclic anonymous types in foo and bar a = b;