为什么TypeScript不能在没有声明的情况下破坏?

时间:2016-12-15 11:30:28

标签: typescript

这有效

let {a, b} = { a: 1, b: 2 }

但这不是

let a: number, b: number
{a, b} = { a: 1, b: 2 }

这很奇怪。这是它应该是的方式还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

在第一个例子中,您已经按值声明了类型,编译已经知道变量是数字。你只能在对象({} = {})中使用解构赋值语法和typescript中的声明,在ES6中你可以不用声明。

// let {a, b} = { a: 1, b: 2 } 
var _a = { a: 1, b: 2 }, a = _a.a, b = _a.b;


//let a: number, b: number;
//{a, b} = { a: 1, b: 2 } <-- Print error in compilation
{
    a, b;
}
{
    a: 1, b;
    2;
}


//let a: number, b: number;
//[a, b] = [1,2]
_b = [1, 2], a = _b[0], b = _b[1];
var _b;

这是两个例子中汇编的结果。