解构指定数据类型
在es6中解构的方式如下:
const o = {a:1000 , b:'string'}
const {a,b} = o
/*
或者是
const {a:valuea,b:valueb} = o
*/
在上面的代码中冒号之后不是给数据指定数据类型,如果需要指定类型需要这样来做,
...
const {a,b}:{a:number,b:string} = o // ok
/*
const {a:valueone,b:valuetwo}:{a:number,b:string} = o // ok
*/
默认值
function keepWholeObject(wholeObject: { a: string, b?: number }) {
let { a, b = 10001 } = wholeObject;
}
函数声明
解构也能用于函数声明。 看以下简单的情况:
type C = { a: string, b?:number }
function f ({a,b}:C):void {
...
}
展开
对象展开还有其它一些意想不到的限制。 首先,它仅包含对象 自身的可枚举属性。 大体上是说当你展开一个对象实例时,你会丢失其方法:
class C {
p = 12;
m() {
}
}
let c = new C();
let clone = { ...c };
clone.p; // ok
clone.m(); // error!