66 lines
2.8 KiB
Plaintext
66 lines
2.8 KiB
Plaintext
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations2.ts(16,5): error TS2412: Property '3.0' of type 'number' is not assignable to numeric index type 'A'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations2.ts(25,5): error TS2412: Property '3.0' of type 'number' is not assignable to numeric index type 'A'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations2.ts(34,5): error TS2412: Property '3.0' of type 'number' is not assignable to numeric index type 'A'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations2.ts(39,5): error TS2322: Type '{ [x: number]: A | number; 1.0: A; 2.0: B; 3.0: number; "2.5": B; "4.0": string; }' is not assignable to type '{ [x: number]: A; }'.
|
|
Index signatures are incompatible.
|
|
Type 'A | number' is not assignable to type 'A'.
|
|
Type 'number' is not assignable to type 'A'.
|
|
|
|
|
|
==== tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations2.ts (4 errors) ====
|
|
// String indexer providing a constraint of a user defined type
|
|
|
|
class A {
|
|
foo(): string { return ''; }
|
|
}
|
|
|
|
class B extends A {
|
|
bar(): string { return ''; }
|
|
}
|
|
|
|
class Foo {
|
|
[x: number]: A;
|
|
1.0: A; // ok
|
|
2.0: B; // ok
|
|
"2.5": B // ok
|
|
3.0: number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2412: Property '3.0' of type 'number' is not assignable to numeric index type 'A'.
|
|
"4.0": string; // error
|
|
}
|
|
|
|
interface Foo2 {
|
|
[x: number]: A;
|
|
1.0: A; // ok
|
|
2.0: B; // ok
|
|
"2.5": B // ok
|
|
3.0: number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2412: Property '3.0' of type 'number' is not assignable to numeric index type 'A'.
|
|
"4.0": string; // error
|
|
}
|
|
|
|
var a: {
|
|
[x: number]: A;
|
|
1.0: A; // ok
|
|
2.0: B; // ok
|
|
"2.5": B // ok
|
|
3.0: number; // error
|
|
~~~~~~~~~~~~
|
|
!!! error TS2412: Property '3.0' of type 'number' is not assignable to numeric index type 'A'.
|
|
"4.0": string; // error
|
|
};
|
|
|
|
// error
|
|
var b: { [x: number]: A } = {
|
|
~
|
|
!!! error TS2322: Type '{ [x: number]: A | number; 1.0: A; 2.0: B; 3.0: number; "2.5": B; "4.0": string; }' is not assignable to type '{ [x: number]: A; }'.
|
|
!!! error TS2322: Index signatures are incompatible.
|
|
!!! error TS2322: Type 'A | number' is not assignable to type 'A'.
|
|
!!! error TS2322: Type 'number' is not assignable to type 'A'.
|
|
1.0: new A(),
|
|
2.0: new B(),
|
|
"2.5": new B(),
|
|
3.0: 1,
|
|
"4.0": ''
|
|
} |