function foo(f: { y: T }): T { return null } var x = foo(new C()).x; // was Error that property x does not exist on type {} class C { y: I; } interface I { x(): Goo; } interface Goo { p: string; }