The new baselines all look correct to me, but obviously a number of the tests need to be updated to reflect union types and the new behavior of best common type. This commit does not cover that.
75 lines
No EOL
3.8 KiB
Text
75 lines
No EOL
3.8 KiB
Text
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(17,5): error TS2412: Property '"4.0"' of type 'string' 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(26,5): error TS2412: Property '"4.0"' of type 'string' 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(35,5): error TS2412: Property '"4.0"' of type 'string' is not assignable to numeric index type 'A'.
|
|
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations2.ts(39,5): error TS2322: Type '{ [x: number]: string | number | A; 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 'string | number | A' is not assignable to type 'A':
|
|
Type 'string' is not assignable to type 'A'.
|
|
|
|
|
|
==== tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations2.ts (7 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
|
|
~~~~~~~~~~~~~~
|
|
!!! error TS2412: Property '"4.0"' of type 'string' is not assignable to numeric index type 'A'.
|
|
}
|
|
|
|
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
|
|
~~~~~~~~~~~~~~
|
|
!!! error TS2412: Property '"4.0"' of type 'string' is not assignable to numeric index type 'A'.
|
|
}
|
|
|
|
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 TS2412: Property '"4.0"' of type 'string' is not assignable to numeric index type 'A'.
|
|
};
|
|
|
|
// error
|
|
var b: { [x: number]: A } = {
|
|
~
|
|
!!! error TS2322: Type '{ [x: number]: string | number | A; 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 'string | number | A' is not assignable to type 'A':
|
|
!!! error TS2322: Type 'string' is not assignable to type 'A'.
|
|
1.0: new A(),
|
|
2.0: new B(),
|
|
"2.5": new B(),
|
|
3.0: 1,
|
|
"4.0": ''
|
|
} |