TS的鸭式辨型法
所谓的鸭式辨型法就是像鸭子一样走路并且嘎嘎叫的就叫鸭子,即具有鸭子特征的认为它就是鸭子,也就是通过制定规则来判定对象是否实现这个接口。
1 |
|
上面代码,在参数里写对象就相当于是直接给 labeledObj 赋值,这个对象有严格的类型定义,所以不能多参或少参。而当你在外面将该对象用另一个变量 myObj 接收,myObj 不会经过额外属性检查,但会根据类型推论为 let myObj: { size: number; label: string } = { size: 10, label: "Size 10 Object" };
,然后将这个 myObj 再赋值给 labeledObj,此时根据类型的兼容性,两种类型对象,参照鸭式辨型法,因为都具有 label 属性,所以被认定为两个相同,故而可以用此法来绕开多余的类型检查。
TS的鸭式辨型法
https://www.wobushi.top/2021/TS的鸭式辨型法/