Accept new baselines

This commit is contained in:
Anders Hejlsberg
2018-06-21 17:21:34 -10:00
parent c2310009e1
commit 4037d07a0b
66 changed files with 306 additions and 242 deletions
@@ -1,6 +1,8 @@
tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(16,5): error TS2345: Argument of type '(string | number | boolean)[]' is not assignable to parameter of type '[string, number, boolean]'.
Property '0' is missing in type '(string | number | boolean)[]'.
tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(17,5): error TS2345: Argument of type '(string | number | boolean)[]' is not assignable to parameter of type '[string, number, boolean]'.
tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(17,5): error TS2345: Argument of type '[string, number, true, ...(string | number | boolean)[]]' is not assignable to parameter of type '[string, number, boolean]'.
Types of property 'length' are incompatible.
Type 'number' is not assignable to type '3'.
tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextualTyping.ts(18,5): error TS2345: Argument of type '{ x: (string | number)[]; y: { c: boolean; d: string; e: number; }; }' is not assignable to parameter of type '{ x: [any, any]; y: { c: any; d: any; e: any; }; }'.
Types of property 'x' are incompatible.
Type '(string | number)[]' is not assignable to type '[any, any]'.
@@ -29,7 +31,9 @@ tests/cases/conformance/expressions/contextualTyping/argumentExpressionContextua
!!! error TS2345: Property '0' is missing in type '(string | number | boolean)[]'.
baz(["string", 1, true, ...array]); // Error
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2345: Argument of type '(string | number | boolean)[]' is not assignable to parameter of type '[string, number, boolean]'.
!!! error TS2345: Argument of type '[string, number, true, ...(string | number | boolean)[]]' is not assignable to parameter of type '[string, number, boolean]'.
!!! error TS2345: Types of property 'length' are incompatible.
!!! error TS2345: Type 'number' is not assignable to type '3'.
foo(o); // Error because x has an array type namely (string|number)[]
~
!!! error TS2345: Argument of type '{ x: (string | number)[]; y: { c: boolean; d: string; e: number; }; }' is not assignable to parameter of type '{ x: [any, any]; y: { c: any; d: any; e: any; }; }'.
@@ -11,7 +11,7 @@ function foo({x: [a, b], y: {c, d, e}}) { }
>e : any
function bar({x: [a, b = 10], y: {c, d, e = { f:1 }}}) { }
>bar : ({ x: [a, b], y: { c, d, e } }: { x: [any, number]; y: { c: any; d: any; e?: { f: number; }; }; }) => void
>bar : ({ x: [a, b], y: { c, d, e } }: { x: [any, number?]; y: { c: any; d: any; e?: { f: number; }; }; }) => void
>x : any
>a : any
>b : number
@@ -7,8 +7,9 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionConte
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 'length' are incompatible.
Type '4' is not assignable to type '3'.
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(14,5): error TS2322: Type '[number, number, number, ...number[]]' is not assignable to type '[number, number, number]'.
Types of property 'length' are incompatible.
Type 'number' is not assignable to type '3'.
==== tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts (4 errors) ====
@@ -39,6 +40,7 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionConte
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[]'.
!!! error TS2322: Type '[number, number, number, ...number[]]' is not assignable to type '[number, number, number]'.
!!! error TS2322: Types of property 'length' are incompatible.
!!! error TS2322: Type 'number' is not assignable to type '3'.
@@ -62,7 +62,7 @@ var spr1 = [1, 2, 3, ...tup];
var spr2:[number, number, number] = [1, 2, 3, ...tup]; // Error
>spr2 : [number, number, number]
>[1, 2, 3, ...tup] : number[]
>[1, 2, 3, ...tup] : [number, number, number, ...number[]]
>1 : 1
>2 : 2
>3 : 3
@@ -71,14 +71,14 @@ var p3 = ([, a]) => { };
>a : any
var p4 = ([, ...a]) => { };
>p4 : ([, ...a]: any[]) => void
>([, ...a]) => { } : ([, ...a]: any[]) => void
>p4 : ([, ...a]: [any?, ...any[]]) => void
>([, ...a]) => { } : ([, ...a]: [any?, ...any[]]) => void
> : undefined
>a : any[]
var p5 = ([a = 1]) => { };
>p5 : ([a]: [number]) => void
>([a = 1]) => { } : ([a]: [number]) => void
>p5 : ([a]: [number?]) => void
>([a = 1]) => { } : ([a]: [number?]) => void
>a : number
>1 : 1
@@ -14,5 +14,5 @@ function foo(_a) {
//// [declarationEmitDestructuring3.d.ts]
declare function bar([x, z, ...w]: any[]): void;
declare function foo([x, ...y]?: (string | number | boolean)[]): void;
declare function bar([x, z, ...w]: [any, any, ...any[]]): void;
declare function foo([x, ...y]?: [number, string, boolean]): void;
@@ -1,15 +1,15 @@
=== tests/cases/compiler/declarationEmitDestructuring3.ts ===
function bar([x, z, ...w]) { }
>bar : ([x, z, ...w]: any[]) => void
>bar : ([x, z, ...w]: [any, any, ...any[]]) => void
>x : any
>z : any
>w : any[]
function foo([x, ...y] = [1, "string", true]) { }
>foo : ([x, ...y]?: (string | number | boolean)[]) => void
>x : string | number | boolean
>y : (string | number | boolean)[]
>[1, "string", true] : (string | number | boolean)[]
>foo : ([x, ...y]?: [number, string, boolean]) => void
>x : number
>y : (string | boolean)[]
>[1, "string", true] : [number, string, boolean]
>1 : 1
>"string" : "string"
>true : true
@@ -24,8 +24,8 @@ function bar2(_a) {
//// [declarationEmitDestructuring5.d.ts]
declare function baz([, z, ,]: [any, any, any]): void;
declare function baz([, z, ,]: [any, any, any?]): void;
declare function foo([, b,]: [any, any]): void;
declare function bar([z, , ,]: [any, any, any]): void;
declare function bar([z, , ,]: [any, any?, any?]): void;
declare function bar1([z, , ,]?: [number, number, number, number, number]): void;
declare function bar2([, , z, , ,]: [any, any, any, any, any]): void;
declare function bar2([, , z, , ,]: [any, any, any, any?, any?]): void;
@@ -1,6 +1,6 @@
=== tests/cases/compiler/declarationEmitDestructuring5.ts ===
function baz([, z, , ]) { }
>baz : ([, z, ,]: [any, any, any]) => void
>baz : ([, z, ,]: [any, any, any?]) => void
> : undefined
>z : any
> : undefined
@@ -11,7 +11,7 @@ function foo([, b, ]: [any, any]): void { }
>b : any
function bar([z, , , ]) { }
>bar : ([z, , ,]: [any, any, any]) => void
>bar : ([z, , ,]: [any, any?, any?]) => void
>z : any
> : undefined
> : undefined
@@ -29,7 +29,7 @@ function bar1([z, , , ] = [1, 3, 4, 6, 7]) { }
>7 : 7
function bar2([,,z, , , ]) { }
>bar2 : ([, , z, , ,]: [any, any, any, any, any]) => void
>bar2 : ([, , z, , ,]: [any, any, any, any?, any?]) => void
> : undefined
> : undefined
>z : any
@@ -23,7 +23,7 @@ var [a11, b11, c11] = [];
>a11 : any
>b11 : any
>c11 : any
>[] : [undefined, undefined, undefined]
>[] : [undefined?, undefined?, undefined?]
var [a2, [b2, { x12, y12: c2 }]=["abc", { x12: 10, y12: false }]] = [1, ["hello", { x12: 5, y12: true }]];
>a2 : number
@@ -24,8 +24,8 @@ var _f = [1, "hello", true], x19 = _f[0], y19 = _f[1], z19 = _f[2], a13 = _f.sli
declare var a5: number[];
declare var x14: number, a6: number[];
declare var x15: number, y15: number, a7: number[];
declare var x16: number, y16: number, z16: number, a8: number[];
declare var x16: number, y16: number, z16: number, a8: any[];
declare var a9: (string | number | boolean)[];
declare var x17: string | number | boolean, a10: (string | number | boolean)[];
declare var x18: string | number | boolean, y18: string | number | boolean, a12: (string | number | boolean)[];
declare var x19: string | number | boolean, y19: string | number | boolean, z19: string | number | boolean, a13: (string | number | boolean)[];
declare var x17: number, a10: (string | boolean)[];
declare var x18: number, y18: string, a12: boolean[];
declare var x19: number, y19: string, z19: boolean, a13: any[];
@@ -9,7 +9,7 @@ var [...a5] = [1, 2, 3];
var [x14, ...a6] = [1, 2, 3];
>x14 : number
>a6 : number[]
>[1, 2, 3] : number[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
@@ -18,7 +18,7 @@ var [x15, y15, ...a7] = [1, 2, 3];
>x15 : number
>y15 : number
>a7 : number[]
>[1, 2, 3] : number[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
@@ -27,8 +27,8 @@ var [x16, y16, z16, ...a8] = [1, 2, 3];
>x16 : number
>y16 : number
>z16 : number
>a8 : number[]
>[1, 2, 3] : number[]
>a8 : any[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
@@ -41,28 +41,28 @@ var [...a9] = [1, "hello", true];
>true : true
var [x17, ...a10] = [1, "hello", true];
>x17 : string | number | boolean
>a10 : (string | number | boolean)[]
>[1, "hello", true] : (string | number | boolean)[]
>x17 : number
>a10 : (string | boolean)[]
>[1, "hello", true] : [number, string, boolean]
>1 : 1
>"hello" : "hello"
>true : true
var [x18, y18, ...a12] = [1, "hello", true];
>x18 : string | number | boolean
>y18 : string | number | boolean
>a12 : (string | number | boolean)[]
>[1, "hello", true] : (string | number | boolean)[]
>x18 : number
>y18 : string
>a12 : boolean[]
>[1, "hello", true] : [number, string, boolean]
>1 : 1
>"hello" : "hello"
>true : true
var [x19, y19, z19, ...a13] = [1, "hello", true];
>x19 : string | number | boolean
>y19 : string | number | boolean
>z19 : string | number | boolean
>a13 : (string | number | boolean)[]
>[1, "hello", true] : (string | number | boolean)[]
>x19 : number
>y19 : string
>z19 : boolean
>a13 : any[]
>[1, "hello", true] : [number, string, boolean]
>1 : 1
>"hello" : "hello"
>true : true
@@ -93,18 +93,18 @@ var [c0, c1] = [...temp];
var [c2] = [];
>c2 : any
>[] : [undefined]
>[] : [undefined?]
var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]]
>c3 : any
>c4 : any
>[[[]], [[[[]]]]] : [[[undefined]], [[[[undefined]]]]]
>[[]] : [[undefined]]
>[] : [undefined]
>[[[[]]]] : [[[[undefined]]]]
>[[[]]] : [[[undefined]]]
>[[]] : [[undefined]]
>[] : [undefined]
>[[[]], [[[[]]]]] : [[[undefined?]], [[[[undefined?]]]]]
>[[]] : [[undefined?]]
>[] : [undefined?]
>[[[[]]]] : [[[[undefined?]]]]
>[[[]]] : [[[undefined?]]]
>[[]] : [[undefined?]]
>[] : [undefined?]
var [[c5], c6]: [[string|number], boolean] = [[1], true];
>c5 : string | number
@@ -149,7 +149,7 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"];
> : undefined
> : undefined
>c10 : (string | number)[]
>[1, 2, 3, 4, "hello"] : (string | number)[]
>[1, 2, 3, 4, "hello"] : [number, number, number, number, string]
>1 : 1
>2 : 2
>3 : 3
@@ -157,10 +157,10 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"];
>"hello" : "hello"
var [c11, c12, ...c13] = [1, 2, "string"];
>c11 : string | number
>c12 : string | number
>c13 : (string | number)[]
>[1, 2, "string"] : (string | number)[]
>c11 : number
>c12 : number
>c13 : string[]
>[1, 2, "string"] : [number, number, string]
>1 : 1
>2 : 2
>"string" : "string"
@@ -93,18 +93,18 @@ var [c0, c1] = [...temp];
var [c2] = [];
>c2 : any
>[] : [undefined]
>[] : [undefined?]
var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]]
>c3 : any
>c4 : any
>[[[]], [[[[]]]]] : [[[undefined]], [[[[undefined]]]]]
>[[]] : [[undefined]]
>[] : [undefined]
>[[[[]]]] : [[[[undefined]]]]
>[[[]]] : [[[undefined]]]
>[[]] : [[undefined]]
>[] : [undefined]
>[[[]], [[[[]]]]] : [[[undefined?]], [[[[undefined?]]]]]
>[[]] : [[undefined?]]
>[] : [undefined?]
>[[[[]]]] : [[[[undefined?]]]]
>[[[]]] : [[[undefined?]]]
>[[]] : [[undefined?]]
>[] : [undefined?]
var [[c5], c6]: [[string|number], boolean] = [[1], true];
>c5 : string | number
@@ -149,7 +149,7 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"];
> : undefined
> : undefined
>c10 : (string | number)[]
>[1, 2, 3, 4, "hello"] : (string | number)[]
>[1, 2, 3, 4, "hello"] : [number, number, number, number, string]
>1 : 1
>2 : 2
>3 : 3
@@ -157,10 +157,10 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"];
>"hello" : "hello"
var [c11, c12, ...c13] = [1, 2, "string"];
>c11 : string | number
>c12 : string | number
>c13 : (string | number)[]
>[1, 2, "string"] : (string | number)[]
>c11 : number
>c12 : number
>c13 : string[]
>[1, 2, "string"] : [number, number, string]
>1 : 1
>2 : 2
>"string" : "string"
@@ -93,18 +93,18 @@ var [c0, c1] = [...temp];
var [c2] = [];
>c2 : any
>[] : [undefined]
>[] : [undefined?]
var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]]
>c3 : any
>c4 : any
>[[[]], [[[[]]]]] : [[[undefined]], [[[[undefined]]]]]
>[[]] : [[undefined]]
>[] : [undefined]
>[[[[]]]] : [[[[undefined]]]]
>[[[]]] : [[[undefined]]]
>[[]] : [[undefined]]
>[] : [undefined]
>[[[]], [[[[]]]]] : [[[undefined?]], [[[[undefined?]]]]]
>[[]] : [[undefined?]]
>[] : [undefined?]
>[[[[]]]] : [[[[undefined?]]]]
>[[[]]] : [[[undefined?]]]
>[[]] : [[undefined?]]
>[] : [undefined?]
var [[c5], c6]: [[string|number], boolean] = [[1], true];
>c5 : string | number
@@ -149,7 +149,7 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"];
> : undefined
> : undefined
>c10 : (string | number)[]
>[1, 2, 3, 4, "hello"] : (string | number)[]
>[1, 2, 3, 4, "hello"] : [number, number, number, number, string]
>1 : 1
>2 : 2
>3 : 3
@@ -157,10 +157,10 @@ var [,,,...c10] = [1, 2, 3, 4, "hello"];
>"hello" : "hello"
var [c11, c12, ...c13] = [1, 2, "string"];
>c11 : string | number
>c12 : string | number
>c13 : (string | number)[]
>[1, 2, "string"] : (string | number)[]
>c11 : number
>c12 : number
>c13 : string[]
>[1, 2, "string"] : [number, number, string]
>1 : 1
>2 : 2
>"string" : "string"
@@ -4,7 +4,7 @@
var [[a0], [[a1]]] = [] // Error
>a0 : any
>a1 : any
>[] : [undefined, undefined]
>[] : [undefined?, undefined?]
var [[a2], [[a3]]] = undefined // Error
>a2 : any
@@ -3,7 +3,7 @@ const [a, b = a] = [1]; // ok
>a : any
>b : any
>a : any
>[1] : [number, any]
>[1] : [number, any?]
>1 : 1
const [c, d = c, e = e] = [1]; // error for e = e
@@ -12,7 +12,7 @@ const [c, d = c, e = e] = [1]; // error for e = e
>c : any
>e : any
>e : any
>[1] : [number, any, any]
>[1] : [number, any?, any?]
>1 : 1
const [f, g = f, h = i, i = f] = [1]; // error for h = i
@@ -23,7 +23,7 @@ const [f, g = f, h = i, i = f] = [1]; // error for h = i
>i : any
>i : any
>f : any
>[1] : [number, any, any, any]
>[1] : [number, any?, any?, any?]
>1 : 1
(function ([a, b = a]) { // ok
@@ -229,7 +229,7 @@ function c5([a, b, [[c]]]) { }
>c : any
function c6([a, b, [[c=1]]]) { }
>c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void
>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void
>a : any
>b : any
>c : number
@@ -229,7 +229,7 @@ function c5([a, b, [[c]]]) { }
>c : any
function c6([a, b, [[c=1]]]) { }
>c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void
>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void
>a : any
>b : any
>c : number
@@ -212,7 +212,7 @@ function c5([a, b, [[c]]]) { }
>c : any
function c6([a, b, [[c=1]]]) { }
>c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void
>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void
>a : any
>b : any
>c : number
@@ -28,10 +28,11 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(39,4): error TS2345: Argument of type '[number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'.
Types of property '2' are incompatible.
Type 'boolean' is not assignable to type '[[any]]'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(40,4): error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number]]]'.
Type '[[string]]' is not assignable to type '[[number]]'.
Type '[string]' is not assignable to type '[number]'.
Type 'string' is not assignable to type 'number'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(40,4): error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number?]]]'.
Type '[[string]]' is not assignable to type '[[number?]]'.
Type '[string]' is not assignable to type '[number?]'.
Types of property '0' are incompatible.
Type 'string' is not assignable to type 'number'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(46,13): error TS2463: A binding pattern parameter cannot be optional in an implementation signature.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(47,13): error TS2463: A binding pattern parameter cannot be optional in an implementation signature.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(56,8): error TS2463: A binding pattern parameter cannot be optional in an implementation signature.
@@ -131,10 +132,11 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(
!!! error TS2345: Type 'boolean' is not assignable to type '[[any]]'.
c6([1, 2, [["string"]]]); // Error, implied type is [any, any, [[number]]] // Use initializer
~~~~~~~~~~~~~~~~~~~~
!!! error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number]]]'.
!!! error TS2345: Type '[[string]]' is not assignable to type '[[number]]'.
!!! error TS2345: Type '[string]' is not assignable to type '[number]'.
!!! error TS2345: Type 'string' is not assignable to type 'number'.
!!! error TS2345: Argument of type '[number, number, [[string]]]' is not assignable to parameter of type '[any, any, [[number?]]]'.
!!! error TS2345: Type '[[string]]' is not assignable to type '[[number?]]'.
!!! error TS2345: Type '[string]' is not assignable to type '[number?]'.
!!! error TS2345: Types of property '0' are incompatible.
!!! error TS2345: Type 'string' is not assignable to type 'number'.
// A parameter can be marked optional by following its name or binding pattern with a question mark (?)
// or by including an initializer. Initializers (including binding property or element initializers) are
@@ -143,7 +143,7 @@ function c5([a, b, [[c]]]) { }
>c : any
function c6([a, b, [[c = 1]]]) { }
>c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void
>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void
>a : any
>b : any
>c : number
@@ -193,7 +193,7 @@ c5([1, 2, false, true]); // Error, implied type is [any, any, [[any]]]
c6([1, 2, [["string"]]]); // Error, implied type is [any, any, [[number]]] // Use initializer
>c6([1, 2, [["string"]]]) : void
>c6 : ([a, b, [[c]]]: [any, any, [[number]]]) => void
>c6 : ([a, b, [[c]]]: [any, any, [[number?]]]) => void
>[1, 2, [["string"]]] : (number | string[][])[]
>1 : 1
>2 : 2
@@ -1,9 +1,14 @@
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts(26,4): error TS2345: Argument of type '[number, number, [[string]], boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'.
Types of property 'length' are incompatible.
Type '5' is not assignable to type '3'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts(29,5): error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
Types of property '2' are incompatible.
Type 'number' is not assignable to type '[[any]]'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts(30,5): error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
Property '2' is missing in type '[number, number]'.
==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts (1 errors) ====
==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.ts (3 errors) ====
// If the parameter is a rest parameter, the parameter type is any[]
// A type annotation for a rest parameter must denote an array type.
@@ -37,7 +42,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5.
a10([1, 2, [["string"]], false, true]); // Parameter type is any[]
a10([1, 2, 3, false, true]); // Parameter type is any[]
~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
!!! error TS2345: Types of property '2' are incompatible.
!!! error TS2345: Type 'number' is not assignable to type '[[any]]'.
a10([1, 2]); // Parameter type is any[]
~~~~~~
!!! error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
!!! error TS2345: Property '2' is missing in type '[number, number]'.
a11([1, 2]); // Parameter type is number[]
// Rest parameter with generic
@@ -52,7 +52,7 @@ function a9([a, b, [[c]]]) { }
>c : any
function a10([a, b, [[c]], ...x]) { }
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>a : any
>b : any
>c : any
@@ -107,19 +107,19 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]]
a10([1, 2, [["string"]], false, true]); // Parameter type is any[]
>a10([1, 2, [["string"]], false, true]) : void
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>[1, 2, [["string"]], false, true] : (number | boolean | string[][])[]
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean]
>1 : 1
>2 : 2
>[["string"]] : string[][]
>["string"] : string[]
>[["string"]] : [[string]]
>["string"] : [string]
>"string" : "string"
>false : false
>true : true
a10([1, 2, 3, false, true]); // Parameter type is any[]
>a10([1, 2, 3, false, true]) : void
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2, 3, false, true] : (number | boolean)[]
>1 : 1
>2 : 2
@@ -129,7 +129,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[]
a10([1, 2]); // Parameter type is any[]
>a10([1, 2]) : void
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2] : number[]
>1 : 1
>2 : 2
@@ -1,9 +1,14 @@
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts(26,4): error TS2345: Argument of type '[number, number, [[string]], boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'.
Types of property 'length' are incompatible.
Type '5' is not assignable to type '3'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts(29,5): error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
Types of property '2' are incompatible.
Type 'number' is not assignable to type '[[any]]'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts(30,5): error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
Property '2' is missing in type '[number, number]'.
==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts (1 errors) ====
==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5iterable.ts (3 errors) ====
// If the parameter is a rest parameter, the parameter type is any[]
// A type annotation for a rest parameter must denote an array type.
@@ -37,7 +42,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES5i
a10([1, 2, [["string"]], false, true]); // Parameter type is any[]
a10([1, 2, 3, false, true]); // Parameter type is any[]
~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
!!! error TS2345: Types of property '2' are incompatible.
!!! error TS2345: Type 'number' is not assignable to type '[[any]]'.
a10([1, 2]); // Parameter type is any[]
~~~~~~
!!! error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
!!! error TS2345: Property '2' is missing in type '[number, number]'.
a11([1, 2]); // Parameter type is number[]
// Rest parameter with generic
@@ -52,7 +52,7 @@ function a9([a, b, [[c]]]) { }
>c : any
function a10([a, b, [[c]], ...x]) { }
>a10 : ([a, b, [[c]], ...x]: any[]) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>a : any
>b : any
>c : any
@@ -107,19 +107,19 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]]
a10([1, 2, [["string"]], false, true]); // Parameter type is any[]
>a10([1, 2, [["string"]], false, true]) : void
>a10 : ([a, b, [[c]], ...x]: any[]) => void
>[1, 2, [["string"]], false, true] : (number | boolean | string[][])[]
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean]
>1 : 1
>2 : 2
>[["string"]] : string[][]
>["string"] : string[]
>[["string"]] : [[string]]
>["string"] : [string]
>"string" : "string"
>false : false
>true : true
a10([1, 2, 3, false, true]); // Parameter type is any[]
>a10([1, 2, 3, false, true]) : void
>a10 : ([a, b, [[c]], ...x]: any[]) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2, 3, false, true] : (number | boolean)[]
>1 : 1
>2 : 2
@@ -129,7 +129,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[]
a10([1, 2]); // Parameter type is any[]
>a10([1, 2]) : void
>a10 : ([a, b, [[c]], ...x]: any[]) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2] : number[]
>1 : 1
>2 : 2
@@ -1,9 +1,14 @@
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts(26,4): error TS2345: Argument of type '[number, number, [[string]], boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]]]'.
Types of property 'length' are incompatible.
Type '5' is not assignable to type '3'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts(29,5): error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
Types of property '2' are incompatible.
Type 'number' is not assignable to type '[[any]]'.
tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts(30,5): error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
Property '2' is missing in type '[number, number]'.
==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts (1 errors) ====
==== tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.ts (3 errors) ====
// If the parameter is a rest parameter, the parameter type is any[]
// A type annotation for a rest parameter must denote an array type.
@@ -37,7 +42,14 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration3ES6.
a10([1, 2, [["string"]], false, true]); // Parameter type is any[]
a10([1, 2, 3, false, true]); // Parameter type is any[]
~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2345: Argument of type '[number, number, number, boolean, boolean]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
!!! error TS2345: Types of property '2' are incompatible.
!!! error TS2345: Type 'number' is not assignable to type '[[any]]'.
a10([1, 2]); // Parameter type is any[]
~~~~~~
!!! error TS2345: Argument of type '[number, number]' is not assignable to parameter of type '[any, any, [[any]], ...any[]]'.
!!! error TS2345: Property '2' is missing in type '[number, number]'.
a11([1, 2]); // Parameter type is number[]
// Rest parameter with generic
@@ -52,7 +52,7 @@ function a9([a, b, [[c]]]) { }
>c : any
function a10([a, b, [[c]], ...x]) { }
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>a : any
>b : any
>c : any
@@ -107,19 +107,19 @@ a9([1, 2, [["string"]], false, true]); // Parameter type is [any, any, [[any]]
a10([1, 2, [["string"]], false, true]); // Parameter type is any[]
>a10([1, 2, [["string"]], false, true]) : void
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>[1, 2, [["string"]], false, true] : (number | boolean | string[][])[]
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2, [["string"]], false, true] : [number, number, [[string]], boolean, boolean]
>1 : 1
>2 : 2
>[["string"]] : string[][]
>["string"] : string[]
>[["string"]] : [[string]]
>["string"] : [string]
>"string" : "string"
>false : false
>true : true
a10([1, 2, 3, false, true]); // Parameter type is any[]
>a10([1, 2, 3, false, true]) : void
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2, 3, false, true] : (number | boolean)[]
>1 : 1
>2 : 2
@@ -129,7 +129,7 @@ a10([1, 2, 3, false, true]); // Parameter type is any[]
a10([1, 2]); // Parameter type is any[]
>a10([1, 2]) : void
>a10 : ([a, b, [[c]], ...x]: Iterable<any>) => void
>a10 : ([a, b, [[c]], ...x]: [any, any, [[any]], ...any[]]) => void
>[1, 2] : number[]
>1 : 1
>2 : 2
@@ -113,9 +113,9 @@ var temp1 = [true, false, true]
>true : true
var [d3, d4] = [1, "string", ...temp1];
>d3 : string | number | boolean
>d4 : string | number | boolean
>[1, "string", ...temp1] : (string | number | boolean)[]
>d3 : number
>d4 : string
>[1, "string", ...temp1] : [number, string, ...boolean[]]
>1 : 1
>"string" : "string"
>...temp1 : boolean
@@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] };
>f4 : number
>f5 : number
> : undefined
>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined]; }
>f : [number, number, { f3: number; f5: number; }, undefined]
>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined]
>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined?]; }
>f : [number, number, { f3: number; f5: number; }, undefined?]
>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined?]
>1 : 1
>2 : 2
>{ f3: 4, f5: 0 } : { f3: number; f5: number; }
@@ -113,9 +113,9 @@ var temp1 = [true, false, true]
>true : true
var [d3, d4] = [1, "string", ...temp1];
>d3 : string | number | boolean
>d4 : string | number | boolean
>[1, "string", ...temp1] : (string | number | boolean)[]
>d3 : number
>d4 : string
>[1, "string", ...temp1] : [number, string, ...boolean[]]
>1 : 1
>"string" : "string"
>...temp1 : boolean
@@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] };
>f4 : number
>f5 : number
> : undefined
>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined]; }
>f : [number, number, { f3: number; f5: number; }, undefined]
>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined]
>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined?]; }
>f : [number, number, { f3: number; f5: number; }, undefined?]
>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined?]
>1 : 1
>2 : 2
>{ f3: 4, f5: 0 } : { f3: number; f5: number; }
@@ -113,9 +113,9 @@ var temp1 = [true, false, true]
>true : true
var [d3, d4] = [1, "string", ...temp1];
>d3 : string | number | boolean
>d4 : string | number | boolean
>[1, "string", ...temp1] : (string | number | boolean)[]
>d3 : number
>d4 : string
>[1, "string", ...temp1] : [number, string, ...boolean[]]
>1 : 1
>"string" : "string"
>...temp1 : boolean
@@ -151,9 +151,9 @@ var {f: [f1, f2, { f3: f4, f5 }, , ]} = { f: [1, 2, { f3: 4, f5: 0 }] };
>f4 : number
>f5 : number
> : undefined
>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined]; }
>f : [number, number, { f3: number; f5: number; }, undefined]
>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined]
>{ f: [1, 2, { f3: 4, f5: 0 }] } : { f: [number, number, { f3: number; f5: number; }, undefined?]; }
>f : [number, number, { f3: number; f5: number; }, undefined?]
>[1, 2, { f3: 4, f5: 0 }] : [number, number, { f3: number; f5: number; }, undefined?]
>1 : 1
>2 : 2
>{ f3: 4, f5: 0 } : { f3: number; f5: number; }
@@ -5,11 +5,9 @@ tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(4
Type '[[boolean]]' is not assignable to type '[[string]]'.
Type '[boolean]' is not assignable to type '[string]'.
Type 'boolean' is not assignable to type 'string'.
tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(14,16): error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c3' and no string index signature.
tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(14,24): error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c5' and no string index signature.
==== tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts (4 errors) ====
==== tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts (2 errors) ====
// The type T associated with a destructuring variable declaration is determined as follows:
// If the declaration includes a type annotation, T is that type.
var {a1, a2}: { a1: number, a2: string } = { a1: true, a2: 1 } // Error
@@ -33,10 +31,6 @@ tests/cases/conformance/es6/destructuring/destructuringVariableDeclaration2.ts(1
// If the binding element is a rest element, T is an array type with
// an element type E, where E is the type of the numeric index signature of S.
var [c1, c2, { c3: c4, c5 }, , ...c6] = [1, 2, { c3: 4, c5: 0 }]; // Error
~~
!!! error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c3' and no string index signature.
~~
!!! error TS2459: Type 'number | { c3: number; c5: number; }' has no property 'c5' and no string index signature.
// When a destructuring variable declaration, binding property, or binding element specifies
// an initializer expression, the type of the initializer expression is required to be assignable
@@ -35,6 +35,7 @@ var [b0 = 3, b1 = true, b2 = temp] = [3, false, { t1: false, t2: 5}]; // Error
var [c1, c2, { c3: c4, c5 }, , ...c6] = [1, 2, { c3: 4, c5: 0 }]; // Error
>c1 : Symbol(c1, Decl(destructuringVariableDeclaration2.ts, 13, 5))
>c2 : Symbol(c2, Decl(destructuringVariableDeclaration2.ts, 13, 8))
>c3 : Symbol(c3, Decl(destructuringVariableDeclaration2.ts, 13, 48))
>c4 : Symbol(c4, Decl(destructuringVariableDeclaration2.ts, 13, 14))
>c5 : Symbol(c5, Decl(destructuringVariableDeclaration2.ts, 13, 22))
>c6 : Symbol(c6, Decl(destructuringVariableDeclaration2.ts, 13, 30))
@@ -53,14 +53,14 @@ var [b0 = 3, b1 = true, b2 = temp] = [3, false, { t1: false, t2: 5}]; // Error
// If the binding element is a rest element, T is an array type with
// an element type E, where E is the type of the numeric index signature of S.
var [c1, c2, { c3: c4, c5 }, , ...c6] = [1, 2, { c3: 4, c5: 0 }]; // Error
>c1 : number | { c3: number; c5: number; }
>c2 : number | { c3: number; c5: number; }
>c1 : number
>c2 : number
>c3 : any
>c4 : any
>c5 : any
>c4 : number
>c5 : number
> : undefined
>c6 : (number | { c3: number; c5: number; })[]
>[1, 2, { c3: 4, c5: 0 }] : (number | { c3: number; c5: number; })[]
>c6 : any[]
>[1, 2, { c3: 4, c5: 0 }] : [number, number, { c3: number; c5: number; }, undefined?]
>1 : 1
>2 : 2
>{ c3: 4, c5: 0 } : { c3: number; c5: number; }
@@ -235,7 +235,7 @@ g1([1, 1]);
// (arg: [number, number]) => void
function g2([x = 0, y = 0]) { }
>g2 : ([x, y]: [number, number]) => void
>g2 : ([x, y]: [number?, number?]) => void
>x : number
>0 : 0
>y : number
@@ -243,7 +243,7 @@ function g2([x = 0, y = 0]) { }
g2([1, 1]);
>g2([1, 1]) : void
>g2 : ([x, y]: [number, number]) => void
>g2 : ([x, y]: [number?, number?]) => void
>[1, 1] : [number, number]
>1 : 1
>1 : 1
@@ -270,40 +270,40 @@ g3([1, 1]);
// (arg?: [number, number]) => void
function g4([x, y = 0] = [0]) { }
>g4 : ([x, y]?: [number, number]) => void
>g4 : ([x, y]?: [number, number?]) => void
>x : number
>y : number
>0 : 0
>[0] : [number, number]
>[0] : [number, number?]
>0 : 0
g4();
>g4() : void
>g4 : ([x, y]?: [number, number]) => void
>g4 : ([x, y]?: [number, number?]) => void
g4([1, 1]);
>g4([1, 1]) : void
>g4 : ([x, y]?: [number, number]) => void
>g4 : ([x, y]?: [number, number?]) => void
>[1, 1] : [number, number]
>1 : 1
>1 : 1
// (arg?: [number, number]) => void
function g5([x = 0, y = 0] = []) { }
>g5 : ([x, y]?: [number, number]) => void
>g5 : ([x, y]?: [number?, number?]) => void
>x : number
>0 : 0
>y : number
>0 : 0
>[] : [number, number]
>[] : [number?, number?]
g5();
>g5() : void
>g5 : ([x, y]?: [number, number]) => void
>g5 : ([x, y]?: [number?, number?]) => void
g5([1, 1]);
>g5([1, 1]) : void
>g5 : ([x, y]?: [number, number]) => void
>g5 : ([x, y]?: [number?, number?]) => void
>[1, 1] : [number, number]
>1 : 1
>1 : 1
@@ -12,7 +12,7 @@ const bar = 1;
let [baz] = [];
>baz : any
>[] : [undefined]
>[] : [undefined?]
let {a: baz2} = { a: 1 };
>a : any
@@ -23,7 +23,7 @@ let {a: baz2} = { a: 1 };
const [baz3] = []
>baz3 : any
>[] : [undefined]
>[] : [undefined?]
const {a: baz4} = { a: 1 };
>a : any
@@ -516,7 +516,7 @@ function foo3() {
}
for (let [y] = []; ;) {
>y : any
>[] : [undefined]
>[] : [undefined?]
use(y);
>use(y) : any
@@ -555,7 +555,7 @@ function foo4() {
}
for (const [y] = []; ;) {
>y : any
>[] : [undefined]
>[] : [undefined?]
use(y);
>use(y) : any
@@ -40,7 +40,7 @@ function f5({e, e: {e}}, {e}, [d,e, [[e]]], ...e) { }
>e : any[]
function f6([f, ...f]) { }
>f6 : ([f, ...f]: any[]) => void
>f6 : ([f, ...f]: [any, ...any[]]) => void
>f : any
>f : any[]
@@ -43,7 +43,7 @@ function f5({e, e: {e}}, {e}, [d, e, [[e]]], ...e) { }
>e : any[]
function f6([f, ...f]) { }
>f6 : ([f, ...f]: any[]) => void
>f6 : ([f, ...f]: [any, ...any[]]) => void
>f : any
>f : any[]
@@ -58,14 +58,14 @@ var p3 = ([, a]) => { };
>a : any
var p4 = ([, ...a]) => { };
>p4 : ([, ...a]: Iterable<any>) => void
>([, ...a]) => { } : ([, ...a]: Iterable<any>) => void
>p4 : ([, ...a]: [any?, ...any[]]) => void
>([, ...a]) => { } : ([, ...a]: [any?, ...any[]]) => void
> : undefined
>a : any[]
var p5 = ([a = 1]) => { };
>p5 : ([a]: [number]) => void
>([a = 1]) => { } : ([a]: [number]) => void
>p5 : ([a]: [number?]) => void
>([a = 1]) => { } : ([a]: [number?]) => void
>a : number
>1 : 1
+1 -1
View File
@@ -13,7 +13,7 @@ var map = new Map([["", true]]);
>true : true
for ([k, ...[v]] of map) {
>[k, ...[v]] : (string | boolean)[]
>[k, ...[v]] : [string, ...boolean[]]
>k : string
>...[v] : boolean
>[v] : [boolean]
@@ -9,7 +9,7 @@ const [, a = ''] = ''.match('') || [];
>'' : ""
>match : (regexp: string | RegExp) => RegExpMatchArray
>'' : ""
>[] : [undefined, ""]
>[] : [undefined?, ""?]
a.toFixed()
>a.toFixed() : any
@@ -0,0 +1,25 @@
tests/cases/conformance/es6/destructuring/iterableArrayPattern13.ts(17,5): error TS2345: Argument of type 'FooIterator' is not assignable to parameter of type '[any, ...any[]]'.
Property '0' is missing in type 'FooIterator'.
==== tests/cases/conformance/es6/destructuring/iterableArrayPattern13.ts (1 errors) ====
class Bar { x }
class Foo extends Bar { y }
class FooIterator {
next() {
return {
value: new Foo,
done: false
};
}
[Symbol.iterator]() {
return this;
}
}
function fun([a, ...b]) { }
fun(new FooIterator);
~~~~~~~~~~~~~~~
!!! error TS2345: Argument of type 'FooIterator' is not assignable to parameter of type '[any, ...any[]]'.
!!! error TS2345: Property '0' is missing in type 'FooIterator'.
@@ -41,13 +41,13 @@ class FooIterator {
}
function fun([a, ...b]) { }
>fun : ([a, ...b]: Iterable<any>) => void
>fun : ([a, ...b]: [any, ...any[]]) => void
>a : any
>b : any[]
fun(new FooIterator);
>fun(new FooIterator) : void
>fun : ([a, ...b]: Iterable<any>) => void
>fun : ([a, ...b]: [any, ...any[]]) => void
>new FooIterator : FooIterator
>FooIterator : typeof FooIterator
@@ -5,7 +5,7 @@ var a: string, b: boolean[];
[a, ...b] = { 0: "", 1: true };
>[a, ...b] = { 0: "", 1: true } : { 0: string; 1: true; }
>[a, ...b] : (string | boolean)[]
>[a, ...b] : [string, ...boolean[]]
>a : string
>...b : boolean
>b : boolean[]
@@ -48,7 +48,7 @@ var a: Bar, b: Bar[];
[a, ...b] = new FooIterator
>[a, ...b] = new FooIterator : FooIterator
>[a, ...b] : Bar[]
>[a, ...b] : [Bar, ...Bar[]]
>a : Bar
>...b : Bar
>b : Bar[]
@@ -47,7 +47,7 @@ var a: Bar, b: string[];
[a, ...b] = new FooIterator;
>[a, ...b] = new FooIterator : FooIterator
>[a, ...b] : (string | Bar)[]
>[a, ...b] : [Bar, ...string[]]
>a : Bar
>...b : string
>b : string[]
@@ -47,7 +47,7 @@ var a: Bar, b: string;
[a, ...b] = new FooIterator;
>[a, ...b] = new FooIterator : FooIterator
>[a, ...b] : (string | Bar)[]
>[a, ...b] : [Bar, ...string[]]
>a : Bar
>...b : string
>b : string
@@ -7,7 +7,7 @@ function f1([a], {b}, c, d) { // error
>d : any
}
function f2([a = undefined], {b = null}, c = undefined, d = null) { // error
>f2 : ([a]: [any], { b }: { b?: any; }, c?: any, d?: any) => void
>f2 : ([a]: [any?], { b }: { b?: any; }, c?: any, d?: any) => void
>a : any
>undefined : undefined
>b : any
@@ -44,5 +44,5 @@ var [a4] = [undefined], {b4} = { b4: null }, c4 = undefined, d4 = null; // error
var [a5 = undefined] = []; // error
>a5 : any
>undefined : undefined
>[] : [undefined]
>[] : [undefined?]
@@ -59,9 +59,9 @@ var { a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit;
({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit);
>({ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit) : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; }
>{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit : { a: { ka: string; x: string; }[]; b: { z: string; ki: string; ku: string; }; ke: string; ko: string; }
>{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } : { ke: string; ko: string; a: { ka: string; x: string; }[]; b: { ki: string; ku: string; z: string; }; }
>a : { ka: string; x: string; }[]
>[{ ...nested2 }, ...y] : { ka: string; x: string; }[]
>{ a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } : { ke: string; ko: string; a: [{ ka: string; x: string; }, ...{ ka: string; x: string; }[]]; b: { ki: string; ku: string; z: string; }; }
>a : [{ ka: string; x: string; }, ...{ ka: string; x: string; }[]]
>[{ ...nested2 }, ...y] : [{ ka: string; x: string; }, ...{ ka: string; x: string; }[]]
>{ ...nested2 } : { ka: string; x: string; }
>nested2 : { ka: string; x: string; }
>...y : { ka: string; x: string; }
@@ -49,7 +49,7 @@ for (let [v] of v) { }
let [x2 = x2] = []
>x2 : any
>x2 : any
>[] : [any]
>[] : [any?]
let z0 = () => z0;
>z0 : () => any
@@ -429,7 +429,7 @@ for (let [nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "
for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) {
>numberA3 : number
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>robotA : [number, string, string]
>i : number
>0 : 0
@@ -448,7 +448,7 @@ for (let [numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) {
}
for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
>numberA3 : number
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>getRobot() : [number, string, string]
>getRobot : () => [number, string, string]
>i : number
@@ -467,9 +467,9 @@ for (let [numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
>numberA3 : number
}
for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) {
>numberA3 : string | number
>robotAInfo : (string | number)[]
>[2, "trimmer", "trimming"] : (string | number)[]
>numberA3 : number
>robotAInfo : string[]
>[2, "trimmer", "trimming"] : [number, string, string]
>2 : 2
>"trimmer" : "trimmer"
>"trimming" : "trimming"
@@ -486,7 +486,7 @@ for (let [numberA3, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i
>console.log : (msg: any) => void
>console : { log(msg: any): void; }
>log : (msg: any) => void
>numberA3 : string | number
>numberA3 : number
}
for (let [...multiRobotAInfo] = multiRobotA, i = 0; i < 1; i++) {
>multiRobotAInfo : (string | [string, string])[]
@@ -531,7 +531,7 @@ for ([nameMA, [primarySkillA, secondarySkillA]] = ["trimmer", ["trimming", "edgi
for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) {
>[numberA3, ...robotAInfo] = robotA, i = 0 : 0
>[numberA3, ...robotAInfo] = robotA : [number, string, string]
>[numberA3, ...robotAInfo] : (string | number)[]
>[numberA3, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -555,7 +555,7 @@ for ([numberA3, ...robotAInfo] = robotA, i = 0; i < 1; i++) {
for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
>[numberA3, ...robotAInfo] = getRobot(), i = 0 : 0
>[numberA3, ...robotAInfo] = getRobot() : [number, string, string]
>[numberA3, ...robotAInfo] : (string | number)[]
>[numberA3, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -580,7 +580,7 @@ for ([numberA3, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
for ([numberA3, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"], i = 0; i < 1; i++) {
>[numberA3, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"], i = 0 : 0
>[numberA3, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"] : [number, string, string]
>[numberA3, ...robotAInfo] : (string | number)[]
>[numberA3, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -534,7 +534,7 @@ for (let [numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) {
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>robotA : [number, string, string]
>i : number
>0 : 0
@@ -555,7 +555,7 @@ for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>getRobot() : [number, string, string]
>getRobot : () => [number, string, string]
>i : number
@@ -574,11 +574,11 @@ for (let [numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
>numberA3 : number
}
for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i < 1; i++) {
>numberA3 : string | number
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>[2, "trimmer", "trimming"] : (string | number)[]
>robotAInfo : string[]
>[2, "trimmer", "trimming"] : [number, string, string]
>2 : 2
>"trimmer" : "trimmer"
>"trimming" : "trimming"
@@ -595,5 +595,5 @@ for (let [numberA3 = -1, ...robotAInfo] = [2, "trimmer", "trimming"], i = 0; i <
>console.log : (msg: any) => void
>console : { log(msg: any): void; }
>log : (msg: any) => void
>numberA3 : string | number
>numberA3 : number
}
@@ -666,7 +666,7 @@ for ([nameMA = "noName",
for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) {
>[numberA3 = -1, ...robotAInfo] = robotA, i = 0 : 0
>[numberA3 = -1, ...robotAInfo] = robotA : [number, string, string]
>[numberA3 = -1, ...robotAInfo] : (string | number)[]
>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 = -1 : -1
>numberA3 : number
>-1 : -1
@@ -693,7 +693,7 @@ for ([numberA3 = -1, ...robotAInfo] = robotA, i = 0; i < 1; i++) {
for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
>[numberA3 = -1, ...robotAInfo] = getRobot(), i = 0 : 0
>[numberA3 = -1, ...robotAInfo] = getRobot() : [number, string, string]
>[numberA3 = -1, ...robotAInfo] : (string | number)[]
>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 = -1 : -1
>numberA3 : number
>-1 : -1
@@ -721,7 +721,7 @@ for ([numberA3 = -1, ...robotAInfo] = getRobot(), i = 0; i < 1; i++) {
for ([numberA3 = -1, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"], i = 0; i < 1; i++) {
>[numberA3 = -1, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"], i = 0 : 0
>[numberA3 = -1, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"] : [number, string, string]
>[numberA3 = -1, ...robotAInfo] : (string | number)[]
>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 = -1 : -1
>numberA3 : number
>-1 : -1
@@ -314,7 +314,7 @@ for (let [nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB
for (let [numberA3, ...robotAInfo] of robots) {
>numberA3 : number
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>robots : [number, string, string][]
console.log(numberA3);
@@ -326,7 +326,7 @@ for (let [numberA3, ...robotAInfo] of robots) {
}
for (let [numberA3, ...robotAInfo] of getRobots()) {
>numberA3 : number
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>getRobots() : [number, string, string][]
>getRobots : () => [number, string, string][]
@@ -339,7 +339,7 @@ for (let [numberA3, ...robotAInfo] of getRobots()) {
}
for (let [numberA3, ...robotAInfo] of [robotA, robotB]) {
>numberA3 : number
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>[robotA, robotB] : [number, string, string][]
>robotA : [number, string, string]
>robotB : [number, string, string]
@@ -357,7 +357,7 @@ for ([nameMA, [primarySkillA, secondarySkillA]] of [multiRobotA, multiRobotB]) {
}
for ([numberA3, ...robotAInfo] of robots) {
>[numberA3, ...robotAInfo] : (string | number)[]
>[numberA3, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -371,7 +371,7 @@ for ([numberA3, ...robotAInfo] of robots) {
>numberA3 : number
}
for ([numberA3, ...robotAInfo] of getRobots()) {
>[numberA3, ...robotAInfo] : (string | number)[]
>[numberA3, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -386,7 +386,7 @@ for ([numberA3, ...robotAInfo] of getRobots()) {
>numberA3 : number
}
for ([numberA3, ...robotAInfo] of [robotA, robotB]) {
>[numberA3, ...robotAInfo] : (string | number)[]
>[numberA3, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -409,7 +409,7 @@ for (let [numberA3 = -1, ...robotAInfo] of robots) {
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>robots : [number, string, string][]
console.log(numberA3);
@@ -423,7 +423,7 @@ for (let [numberA3 = -1, ...robotAInfo] of getRobots()) {
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>getRobots() : [number, string, string][]
>getRobots : () => [number, string, string][]
@@ -438,7 +438,7 @@ for (let [numberA3 = -1, ...robotAInfo] of [robotA, robotB]) {
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>[robotA, robotB] : [number, string, string][]
>robotA : [number, string, string]
>robotB : [number, string, string]
@@ -489,7 +489,7 @@ for ([nameMA = "noName", [
}
for ([numberA3 = -1, ...robotAInfo] of robots) {
>[numberA3 = -1, ...robotAInfo] : (string | number)[]
>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 = -1 : -1
>numberA3 : number
>-1 : -1
@@ -506,7 +506,7 @@ for ([numberA3 = -1, ...robotAInfo] of robots) {
>numberA3 : number
}
for ([numberA3 = -1, ...robotAInfo] of getRobots()) {
>[numberA3 = -1, ...robotAInfo] : (string | number)[]
>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 = -1 : -1
>numberA3 : number
>-1 : -1
@@ -524,7 +524,7 @@ for ([numberA3 = -1, ...robotAInfo] of getRobots()) {
>numberA3 : number
}
for ([numberA3 = -1, ...robotAInfo] of [robotA, robotB]) {
>[numberA3 = -1, ...robotAInfo] : (string | number)[]
>[numberA3 = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberA3 = -1 : -1
>numberA3 : number
>-1 : -1
@@ -62,7 +62,7 @@ function foo3([numberA2, nameA2, skillA2]: Robot) {
function foo4([numberA3, ...robotAInfo]: Robot) {
>foo4 : ([numberA3, ...robotAInfo]: [number, string, string]) => void
>numberA3 : number
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>Robot : [number, string, string]
console.log(robotAInfo);
@@ -70,7 +70,7 @@ function foo4([numberA3, ...robotAInfo]: Robot) {
>console.log : (msg: any) => void
>console : { log(msg: any): void; }
>log : (msg: any) => void
>robotAInfo : (string | number)[]
>robotAInfo : string[]
}
foo1(robotA);
@@ -86,7 +86,7 @@ function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) {
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>Robot : [number, string, string]
>[-1, "name", "skill"] : [number, string, string]
>-1 : -1
@@ -99,7 +99,7 @@ function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) {
>console.log : (msg: any) => void
>console : { log(msg: any): void; }
>log : (msg: any) => void
>robotAInfo : (string | number)[]
>robotAInfo : string[]
}
foo1(robotA);
@@ -59,7 +59,7 @@ let [numberC, nameC, skillC] = [3, "edging", "Trimming edges"];
let [numberA3, ...robotAInfo] = robotA;
>numberA3 : number
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>robotA : [number, string, string]
if (nameA == nameA2) {
@@ -222,7 +222,7 @@ let multiRobotAInfo: (string | [string, string])[];
[numberB, ...robotAInfo] = robotB;
>[numberB, ...robotAInfo] = robotB : [number, string, string]
>[numberB, ...robotAInfo] : (string | number)[]
>[numberB, ...robotAInfo] : [number, ...(string | number)[]]
>numberB : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -230,7 +230,7 @@ let multiRobotAInfo: (string | [string, string])[];
[numberB, ...robotAInfo] = getRobotB();
>[numberB, ...robotAInfo] = getRobotB() : [number, string, string]
>[numberB, ...robotAInfo] : (string | number)[]
>[numberB, ...robotAInfo] : [number, ...(string | number)[]]
>numberB : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -239,7 +239,7 @@ let multiRobotAInfo: (string | [string, string])[];
[numberB, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"];
>[numberB, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"] : [number, string, string]
>[numberB, ...robotAInfo] : (string | number)[]
>[numberB, ...robotAInfo] : [number, ...(string | number)[]]
>numberB : number
>...robotAInfo : string | number
>robotAInfo : (string | number)[]
@@ -73,7 +73,7 @@ let [numberA3 = -1, ...robotAInfo] = robotA;
>numberA3 : number
>-1 : -1
>1 : 1
>robotAInfo : (string | number)[]
>robotAInfo : string[]
>robotA : [number, string, string]
if (nameA == nameA2) {
@@ -238,11 +238,11 @@ let multiRobotAInfo: (string | string[])[];
[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB;
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = multiRobotB : [string, string[]]
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]]
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string?, string?]]
>nameMB = "helloNoName" : "helloNoName"
>nameMB : string
>"helloNoName" : "helloNoName"
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string]
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string?, string?]
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string]
>primarySkillB = "noSkill" : "noSkill"
>primarySkillB : string
@@ -250,16 +250,16 @@ let multiRobotAInfo: (string | string[])[];
>secondarySkillB = "noSkill" : "noSkill"
>secondarySkillB : string
>"noSkill" : "noSkill"
>[] : [string, string]
>[] : [string?, string?]
>multiRobotB : [string, string[]]
[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB();
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = getMultiRobotB() : [string, string[]]
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]]
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string?, string?]]
>nameMB = "helloNoName" : "helloNoName"
>nameMB : string
>"helloNoName" : "helloNoName"
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string]
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string?, string?]
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string]
>primarySkillB = "noSkill" : "noSkill"
>primarySkillB : string
@@ -267,17 +267,17 @@ let multiRobotAInfo: (string | string[])[];
>secondarySkillB = "noSkill" : "noSkill"
>secondarySkillB : string
>"noSkill" : "noSkill"
>[] : [string, string]
>[] : [string?, string?]
>getMultiRobotB() : [string, string[]]
>getMultiRobotB : () => [string, string[]]
[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] =
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] = ["trimmer", ["trimming", "edging"]] : [string, [string, string]]
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string, string]]
>[nameMB = "helloNoName", [primarySkillB = "noSkill", secondarySkillB = "noSkill"] = []] : [string, [string?, string?]]
>nameMB = "helloNoName" : "helloNoName"
>nameMB : string
>"helloNoName" : "helloNoName"
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string, string]
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] = [] : [string?, string?]
>[primarySkillB = "noSkill", secondarySkillB = "noSkill"] : [string, string]
>primarySkillB = "noSkill" : "noSkill"
>primarySkillB : string
@@ -285,7 +285,7 @@ let multiRobotAInfo: (string | string[])[];
>secondarySkillB = "noSkill" : "noSkill"
>secondarySkillB : string
>"noSkill" : "noSkill"
>[] : [string, string]
>[] : [string?, string?]
["trimmer", ["trimming", "edging"]];
>["trimmer", ["trimming", "edging"]] : [string, [string, string]]
@@ -296,7 +296,7 @@ let multiRobotAInfo: (string | string[])[];
[numberB = -1, ...robotAInfo] = robotB;
>[numberB = -1, ...robotAInfo] = robotB : [number, string, string]
>[numberB = -1, ...robotAInfo] : (string | number)[]
>[numberB = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberB = -1 : -1
>numberB : number
>-1 : -1
@@ -307,7 +307,7 @@ let multiRobotAInfo: (string | string[])[];
[numberB = -1, ...robotAInfo] = getRobotB();
>[numberB = -1, ...robotAInfo] = getRobotB() : [number, string, string]
>[numberB = -1, ...robotAInfo] : (string | number)[]
>[numberB = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberB = -1 : -1
>numberB : number
>-1 : -1
@@ -319,7 +319,7 @@ let multiRobotAInfo: (string | string[])[];
[numberB = -1, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"];
>[numberB = -1, ...robotAInfo] = <Robot>[2, "trimmer", "trimming"] : [number, string, string]
>[numberB = -1, ...robotAInfo] : (string | number)[]
>[numberB = -1, ...robotAInfo] : [number, ...(string | number)[]]
>numberB = -1 : -1
>numberB : number
>-1 : -1