=== tests/cases/compiler/classImplementsClass3.ts === class A { foo(): number { return 1; } } >A : A, Symbol(A, Decl(classImplementsClass3.ts, 0, 0)) >foo : () => number, Symbol(foo, Decl(classImplementsClass3.ts, 0, 9)) >1 : number class C implements A { >C : C, Symbol(C, Decl(classImplementsClass3.ts, 0, 39)) >A : A, Symbol(A, Decl(classImplementsClass3.ts, 0, 0)) foo() { >foo : () => number, Symbol(foo, Decl(classImplementsClass3.ts, 1, 22)) return 1; >1 : number } } class C2 extends A {} >C2 : C2, Symbol(C2, Decl(classImplementsClass3.ts, 5, 1)) >A : A, Symbol(A, Decl(classImplementsClass3.ts, 0, 0)) // no errors var c: C; >c : C, Symbol(c, Decl(classImplementsClass3.ts, 10, 3)) >C : C, Symbol(C, Decl(classImplementsClass3.ts, 0, 39)) var c2: C2; >c2 : C2, Symbol(c2, Decl(classImplementsClass3.ts, 11, 3)) >C2 : C2, Symbol(C2, Decl(classImplementsClass3.ts, 5, 1)) c = c2; >c = c2 : C2 >c : C, Symbol(c, Decl(classImplementsClass3.ts, 10, 3)) >c2 : C2, Symbol(c2, Decl(classImplementsClass3.ts, 11, 3)) c2 = c; >c2 = c : C >c2 : C2, Symbol(c2, Decl(classImplementsClass3.ts, 11, 3)) >c : C, Symbol(c, Decl(classImplementsClass3.ts, 10, 3))