tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(7,7): error TS2720: Class 'D' incorrectly implements class 'C<number>'. Did you mean to extend 'C<number>' and inherit its members as a subclass?
  The types returned by 'bar()' are incompatible between these types.
    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(15,18): error TS2684: The 'this' context of type 'D' is not assignable to method's 'this' of type 'C<T>'.
  The types returned by 'bar()' are incompatible between these types.
    Type 'string' is not assignable to type 'T'.
      'T' could be instantiated with an arbitrary type which could be unrelated to 'string'.
tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,5): error TS2322: Type 'string' is not assignable to type 'number'.
tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,18): error TS2684: The 'this' context of type 'D' is not assignable to method's 'this' of type 'C<T>'.


==== tests/cases/compiler/extendAndImplementTheSameBaseType2.ts (5 errors) ====
    class C<T> {
        foo: number
        bar(): T {
            return null;
        }
    }
    class D extends C<string> implements C<number> {
          ~
!!! error TS2720: Class 'D' incorrectly implements class 'C<number>'. Did you mean to extend 'C<number>' and inherit its members as a subclass?
!!! error TS2720:   The types returned by 'bar()' are incompatible between these types.
!!! error TS2720:     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();
                     ~
!!! error TS2684: The 'this' context of type 'D' is not assignable to method's 'this' of type 'C<T>'.
!!! error TS2684:   The types returned by 'bar()' are incompatible between these types.
!!! error TS2684:     Type 'string' is not assignable to type 'T'.
!!! error TS2684:       'T' could be instantiated with an arbitrary type which could be unrelated to 'string'.
    var r4: number = d.bar();
        ~~
!!! error TS2322: Type 'string' is not assignable to type 'number'.
                     ~
!!! error TS2684: The 'this' context of type 'D' is not assignable to method's 'this' of type 'C<T>'.