tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(7,7): error TS2420: Class 'D' incorrectly implements interface 'C'. Types of property 'bar' are incompatible. Type '() => string' is not assignable to type '() => number'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(12,5): error TS2322: Type 'number' is not assignable to type 'string'. tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,5): error TS2322: Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/extendAndImplementTheSameBaseType2.ts (3 errors) ==== class C { foo: number bar(): T { return null; } } class D extends C implements C { ~ !!! error TS2420: Class 'D' incorrectly implements interface 'C'. !!! error TS2420: Types of property 'bar' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => number'. !!! error TS2420: Type 'string' is not assignable to type 'number'. baz() { } } var d: D = new D(); var r: string = d.foo; ~ !!! error TS2322: Type 'number' is not assignable to type 'string'. var r2: number = d.foo; var r3: string = d.bar(); var r4: number = d.bar(); ~~ !!! error TS2322: Type 'string' is not assignable to type 'number'.