37 lines
1 KiB
TypeScript
37 lines
1 KiB
TypeScript
|
// @target: ES6
|
||
|
// destructuring in variable declarations
|
||
|
let foo = "bar";
|
||
|
let {[foo]: bar} = {bar: "bar"};
|
||
|
|
||
|
let {["bar"]: bar2} = {bar: "bar"};
|
||
|
let {[11]: bar2_1} = {11: "bar"};
|
||
|
|
||
|
let foo2 = () => "bar";
|
||
|
let {[foo2()]: bar3} = {bar: "bar"};
|
||
|
|
||
|
let [{[foo]: bar4}] = [{bar: "bar"}];
|
||
|
let [{[foo2()]: bar5}] = [{bar: "bar"}];
|
||
|
|
||
|
function f1({["bar"]: x}: { bar: number }) {}
|
||
|
function f2({[foo]: x}: { bar: number }) {}
|
||
|
function f3({[foo2()]: x}: { bar: number }) {}
|
||
|
function f4([{[foo]: x}]: [{ bar: number }]) {}
|
||
|
function f5([{[foo2()]: x}]: [{ bar: number }]) {}
|
||
|
|
||
|
// report errors on type errors in computed properties used in destructuring
|
||
|
let [{[foo()]: bar6}] = [{bar: "bar"}];
|
||
|
let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}];
|
||
|
|
||
|
// destructuring assignment
|
||
|
({[foo]: bar} = {bar: "bar"});
|
||
|
|
||
|
({["bar"]: bar2} = {bar: "bar"});
|
||
|
|
||
|
({[foo2()]: bar3} = {bar: "bar"});
|
||
|
|
||
|
[{[foo]: bar4}] = [{bar: "bar"}];
|
||
|
[{[foo2()]: bar5}] = [{bar: "bar"}];
|
||
|
|
||
|
[{[foo()]: bar4}] = [{bar: "bar"}];
|
||
|
[{[(1 + {})]: bar4}] = [{bar: "bar"}];
|