class X { } interface Foo { z: Foo>; // error } var f: Foo; var r = f.z; class C2 { x: T; } interface Foo2 { ofC4: C2<{ x: T }> // ok } var f2: Foo2; var r2 = f2.ofC4;