数组解构
1 | let input = [1, 2]; |
作用于函数
1 | function f([first, second]: [number, number]) { |
1 | let [first, ...rest] = [1, 2, 3, 4]; |
对象解构
1 | let o = { |
1 | ({ a, b } = { a: "baz", b: 101 }); |
注意,我们需要用括号将它括起来,因为Javascript通常会将以 { 起始的语句解析为一个块。
1 | let { a, ...passthrough } = o; |
属性重命名
1 | let { a: newName1, b: newName2 } = o; |
1 | let {a, b}: {a: string, b: number} = o; |
默认值
1 | function keepWholeObject(wholeObject: { a: string, b?: number }) { |
函数声明
1 | type C = { a: string, b?: number } |
展开
1 | let first = [1, 2]; |
1 | let defaults = { food: "spicy", price: "$$", ambiance: "noisy" }; |
对象展开还有其它一些意想不到的限制。 首先,它仅包含对象 自身的可枚举属性。 大体上是说当你展开一个对象实例时,你会丢失其方法:
1 | class C { |
其次,TypeScript编译器不允许展开泛型函数上的类型参数。