解构赋值+ts
解构赋值是es6的新增属性,在实际开发中也有很多的用处
解构赋值默认会以被解构的对象或者数组来进行类型推断,例如
type ArrType = { str: string, num: number, bool:boolean }
const arr: ArrType = { str:'111',num: 111,bool: true }
const {str, num, bool } = arr
在这里可以显而易见的得到str的类型是string, num的类型是number,bool的类型是boolean,但是实际开发中,会有各种各样的原因,比如AnyScript使用者的如下代码(或者是一些不是很方便定义类型的情况,当然应该比较少)
const arr1 = {}
这个时候的arr1是一个任意类型的可以扩充的对象,这个时候我们可以
const { str, bool, num } = arr1
这时获取到的str、bool、num类型不出意外都是any
那么如果这个时候需要对arr1的类型进行约束的时候要怎么做呢,首选的方法当然是如最上一块代码,在创建arr1的时候进行类型约束,但是除此之外是否还有其它的办法,其实是有的
const { str, bool, num } = arr1 as { str: string, bool: boolean, num: number }
当然这是一种偷懒的写法,既然使用了ts那么尽量还是要在创建对象的时候进行好类型约束,而且提前做好了类型约束也可以一定意义上复用这个对象的类型,这种可能只适合基础并不牢靠,或者是老代码中对于对象属性的类型约束并不严格,但是你接受这堆山之后想让自己看的稍微舒服点的时候进行约束,或者是其他的一些边际情况的时候