=== tests/cases/compiler/genericSpecializations1.ts === interface IFoo { >IFoo : IFoo >T : T foo(x: T): T; // no error on implementors because IFoo's T is different from foo's T >foo : (x: T) => T >T : T >x : T >T : T >T : T } class IntFooBad implements IFoo { >IntFooBad : IntFooBad >IFoo : IFoo foo(x: string): string { return null; } >foo : (x: string) => string >x : string >null : null } class StringFoo2 implements IFoo { >StringFoo2 : StringFoo2 >IFoo : IFoo foo(x: string): string { return null; } >foo : (x: string) => string >x : string >null : null } class StringFoo3 implements IFoo { >StringFoo3 : StringFoo3 >IFoo : IFoo foo(x: T): T { return null; } >foo : (x: T) => T >T : T >x : T >T : T >T : T >null : null }