File: destructuringArrayBindingPatternAndAssignment1ES6.errors.txt

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (63 lines) | stat: -rw-r--r-- 3,527 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts(43,6): error TS2525: Initializer provides no value for this binding element and the binding element has no default value.
tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts(44,8): error TS2525: Initializer provides no value for this binding element and the binding element has no default value.
tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts(44,18): error TS2525: Initializer provides no value for this binding element and the binding element has no default value.


==== tests/cases/conformance/es6/destructuring/destructuringArrayBindingPatternAndAssignment1ES6.ts (3 errors) ====
    /* AssignmentPattern:
     *      ObjectAssignmentPattern
     *      ArrayAssignmentPattern
     * ArrayAssignmentPattern:
     *      [Elision<opt>   AssignmentRestElementopt   ]
     *      [AssignmentElementList]
     *      [AssignmentElementList, Elision<opt>   AssignmentRestElementopt   ]
     * AssignmentElementList:
     *      Elision<opt>   AssignmentElement
     *      AssignmentElementList, Elisionopt   AssignmentElement
     * AssignmentElement:
     *      LeftHandSideExpression   Initialiseropt
     *      AssignmentPattern   Initialiseropt
     * AssignmentRestElement:
     *      ...   LeftHandSideExpression
     */
    
    // In a destructuring assignment expression, the type of the expression on the right must be assignable to the assignment target on the left.
    // An expression of type S is considered assignable to an assignment target V if one of the following is true
    
    // V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V,
    //      S is the type Any, or
    
    var [a0, a1]: any = undefined;
    var [a2 = false, a3 = 1]: any = undefined;
    
    // V is an array assignment pattern, S is the type Any or an array-like type (section 3.3.2), and, for each assignment element E in V,
    //      S is a tuple- like type (section 3.3.3) with a property named N of a type that is assignable to the target given in E,
    //        where N is the numeric index of E in the array assignment pattern, or
    var [b0, b1, b2] = [2, 3, 4];
    var [b3, b4, b5]: [number, number, string] = [1, 2, "string"];
    
    function foo() {
        return [1, 2, 3];
    }
    
    var [b6, b7] = foo();
    var [...b8] = foo();
    
    //      S is not a tuple- like type and the numeric index signature type of S is assignable to the target given in E.
    var temp = [1,2,3]
    var [c0, c1] = [...temp];
    var [c2] = [];
         ~~
!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value.
    var [[[c3]], [[[[c4]]]]] = [[[]], [[[[]]]]]
           ~~
!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value.
                     ~~
!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value.
    var [[c5], c6]: [[string|number], boolean] = [[1], true];
    var [, c7] = [1, 2, 3];
    var [,,, c8] = [1, 2, 3, 4];
    var [,,, c9] = [1, 2, 3, 4];
    var [,,,...c10] = [1, 2, 3, 4, "hello"];
    var [c11, c12, ...c13] = [1, 2, "string"];
    var [c14, c15, c16] = [1, 2, "string"];