=== tests/cases/compiler/genericImplements.ts === class A { a; }; >A : A >a : any class B { b; }; >B : B >b : any interface I { >I : I f(): T; >f : () => T >T : T >A : A >T : T } // { f: () => { a; } } // OK class X implements I { >X : X >I : I f(): T { return undefined; } >f : () => T >T : T >B : B >T : T >undefined : undefined } // { f: () => { b; } } // OK class Y implements I { >Y : Y >I : I f(): T { return undefined; } >f : () => T >T : T >A : A >T : T >undefined : undefined } // { f: () => { a; } } // OK class Z implements I { >Z : Z >I : I f(): T { return undefined; } >f : () => T >T : T >T : T >undefined : undefined } // { f: () => T }