34 lines
2.4 KiB
Plaintext
34 lines
2.4 KiB
Plaintext
|
tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(8,5): error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'.
|
||
|
Types of property 'pop' are incompatible.
|
||
|
Type '() => string | number' is not assignable to type '() => number'.
|
||
|
Type 'string | number' is not assignable to type 'number'.
|
||
|
Type 'string' is not assignable to type 'number'.
|
||
|
tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(14,5): error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'.
|
||
|
Property '0' is missing in type 'number[]'.
|
||
|
|
||
|
|
||
|
==== tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts (2 errors) ====
|
||
|
// In a contextually typed array literal expression containing no spread elements, an element expression at index N is contextually typed by
|
||
|
// the type of the property with the numeric name N in the contextual type, if any, or otherwise
|
||
|
// the numeric index type of the contextual type, if any.
|
||
|
var array = [1, 2, 3];
|
||
|
var array1 = [true, 2, 3]; // Contextual type by the numeric index type of the contextual type
|
||
|
var tup: [number, number, number] = [1, 2, 3, 4];
|
||
|
var tup1: [number|string, number|string, number|string] = [1, 2, 3, "string"];
|
||
|
var tup2: [number, number, number] = [1, 2, 3, "string"]; // Error
|
||
|
~~~~
|
||
|
!!! error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'.
|
||
|
!!! error TS2322: Types of property 'pop' are incompatible.
|
||
|
!!! error TS2322: Type '() => string | number' is not assignable to type '() => number'.
|
||
|
!!! error TS2322: Type 'string | number' is not assignable to type 'number'.
|
||
|
!!! error TS2322: Type 'string' is not assignable to type 'number'.
|
||
|
|
||
|
// In a contextually typed array literal expression containing one or more spread elements,
|
||
|
// an element expression at index N is contextually typed by the numeric index type of the contextual type, if any.
|
||
|
var spr = [1, 2, 3, ...array];
|
||
|
var spr1 = [1, 2, 3, ...tup];
|
||
|
var spr2:[number, number, number] = [1, 2, 3, ...tup]; // Error
|
||
|
~~~~
|
||
|
!!! error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'.
|
||
|
!!! error TS2322: Property '0' is missing in type 'number[]'.
|
||
|
|