1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer5.ts(11,7): error TS2420: Class 'B' incorrectly implements interface 'A'.
'string' and 'number' index signatures are incompatible.
Type 'Base' is not assignable to type 'Derived'.
Property 'bar' is missing in type 'Base' but required in type 'Derived'.
tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer5.ts(32,11): error TS2420: Class 'B3<T>' incorrectly implements interface 'A<T>'.
'string' and 'number' index signatures are incompatible.
Type 'Base' is not assignable to type 'T'.
'T' could be instantiated with an arbitrary type which could be unrelated to 'Base'.
tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer5.ts(36,11): error TS2420: Class 'B4<T>' incorrectly implements interface 'A<T>'.
'string' and 'number' index signatures are incompatible.
Type 'Derived' is not assignable to type 'T'.
'Derived' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived'.
tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer5.ts(40,11): error TS2420: Class 'B5<T>' incorrectly implements interface 'A<T>'.
'string' and 'number' index signatures are incompatible.
Type 'Derived2' is not assignable to type 'T'.
'Derived2' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived2'.
==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer5.ts (4 errors) ====
// Derived type indexer must be subtype of base type indexer
interface Base { foo: string; }
interface Derived extends Base { bar: string; }
interface Derived2 extends Derived { baz: string; }
interface A {
[x: number]: Derived;
}
class B implements A {
~
!!! error TS2420: Class 'B' incorrectly implements interface 'A'.
!!! error TS2420: 'string' and 'number' index signatures are incompatible.
!!! error TS2420: Type 'Base' is not assignable to type 'Derived'.
!!! error TS2420: Property 'bar' is missing in type 'Base' but required in type 'Derived'.
!!! related TS2728 tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer5.ts:4:34: 'bar' is declared here.
[x: string]: Base; // error
}
class B2 implements A {
[x: string]: Derived2; // ok
}
module Generics {
interface A<T extends Base> {
[x: number]: T;
}
class B implements A<Base> {
[x: string]: Derived; // ok
}
class B2 implements A<Derived> {
[x: string]: Derived2; // ok
}
class B3<T extends Derived> implements A<T> {
~~
!!! error TS2420: Class 'B3<T>' incorrectly implements interface 'A<T>'.
!!! error TS2420: 'string' and 'number' index signatures are incompatible.
!!! error TS2420: Type 'Base' is not assignable to type 'T'.
!!! error TS2420: 'T' could be instantiated with an arbitrary type which could be unrelated to 'Base'.
[x: string]: Base; // error
}
class B4<T extends Derived> implements A<T> {
~~
!!! error TS2420: Class 'B4<T>' incorrectly implements interface 'A<T>'.
!!! error TS2420: 'string' and 'number' index signatures are incompatible.
!!! error TS2420: Type 'Derived' is not assignable to type 'T'.
!!! error TS2420: 'Derived' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived'.
[x: string]: Derived; // error
}
class B5<T extends Derived2> implements A<T> {
~~
!!! error TS2420: Class 'B5<T>' incorrectly implements interface 'A<T>'.
!!! error TS2420: 'string' and 'number' index signatures are incompatible.
!!! error TS2420: Type 'Derived2' is not assignable to type 'T'.
!!! error TS2420: 'Derived2' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'Derived2'.
[x: string]: Derived2; // error
}
}
|