d4792062bf
* Initial implementation of variadic tuple types * Accept new baselines * Handle variadic elements in tuple type inference * Special case inference between tuples with matching structure * Restore check that rest element is last element * Handle variadic tuples in relationship checking * Accept new baselines * Infer readonly constraints when inferring from readonly tuples * Fix lint issues * T assignable to readonly [...T] and [...T] assignable to T * Consistent tuple normalization * Create variadic tuple types from array literal expressions * Accept new baselines * Array literals have tuple types when contextual type is readonly * Accept new baselines * Optional elements before required elements become required elements * Update logic for rest parameters and spread arguments * Revert special case of contextual readonly array type * Accept new baselines * Fix lint issue * Switch entirely to createTupleType based on element flags * Don't infer readonly tuple types when inferring to variadic elements * Handle mapped types applied to generic tuple types * Handle constraint of indexed access type with generic tuple type * Accept new baselines * Address CR feedback * Simplify indexed access types involving generic tuple types * Propagate checkMode into getSpreadArgumentType * Guard against missing globalArrayType * Inference to [...T, ...U] based on implied arity of T * Accept new baselines * Add tests * Emit .d.ts from tests * Address CR feedback
38 lines
3 KiB
Plaintext
38 lines
3 KiB
Plaintext
tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(6,5): error TS2322: Type '[number, number, number, number]' is not assignable to type '[number, number, number]'.
|
|
Source has 4 element(s) but target allows only 3.
|
|
tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(7,5): error TS2322: Type '[number, number, number, string]' is not assignable to type '[string | number, string | number, string | number]'.
|
|
Source has 4 element(s) but target allows only 3.
|
|
tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(8,5): error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'.
|
|
Source has 4 element(s) but target allows only 3.
|
|
tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(14,5): error TS2322: Type '[number, number, number, number, number, number]' is not assignable to type '[number, number, number]'.
|
|
Source has 6 element(s) but target allows only 3.
|
|
|
|
|
|
==== tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts (4 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];
|
|
~~~
|
|
!!! error TS2322: Type '[number, number, number, number]' is not assignable to type '[number, number, number]'.
|
|
!!! error TS2322: Source has 4 element(s) but target allows only 3.
|
|
var tup1: [number|string, number|string, number|string] = [1, 2, 3, "string"];
|
|
~~~~
|
|
!!! error TS2322: Type '[number, number, number, string]' is not assignable to type '[string | number, string | number, string | number]'.
|
|
!!! error TS2322: Source has 4 element(s) but target allows only 3.
|
|
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: Source has 4 element(s) but target allows only 3.
|
|
|
|
// 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, number, number, number, number, number]' is not assignable to type '[number, number, number]'.
|
|
!!! error TS2322: Source has 6 element(s) but target allows only 3.
|
|
|