//// [genericClasses2.ts] interface Foo { a: T; } class C { public x: T; public y: Foo; public z: Foo; } var v1 : C; var y = v1.x; // should be 'string' var w = v1.y.a; // should be 'string' var z = v1.z.a; // should be 'number' //// [genericClasses2.js] var C = (function () { function C() { } return C; })(); var v1; var y = v1.x; // should be 'string' var w = v1.y.a; // should be 'string' var z = v1.z.a; // should be 'number' //// [genericClasses2.d.ts] interface Foo { a: T; } declare class C { x: T; y: Foo; z: Foo; } declare var v1: C; declare var y: string; declare var w: string; declare var z: number;