TypeScript 鸭子类型
根据TypeScript,鸭子类型是一种用于检查更复杂变量类型的方法/规则,用于检查 类型兼容性 。
TypeScript使用 鸭子类型 的方法来通过检查两个对象是否具有 相同类型匹配 的名称来比较一个对象和其他对象。这意味着我们不能改变变量的签名。例如,如果我们分配一个具有 两个 属性(name、address)的对象,然后下一次我们分配一个包含更多属性或较少属性或两个属性都不是(name、address)的对象,那么TypeScript编译器将生成 编译时错误 。这个概念被称为 鸭子类型 。
鸭子类型特性提供了TypeScript代码中的类型安全性。
通过鸭子类型规则,TypeScript编译器检查一个对象是否与其他对象相同。
根据鸭子类型方法,两个对象必须具有相同的属性/变量类型。
class Dog {
sound = "barking";
}
class Lion {
sound = "roaring";
}
class Goat {
sound = "bleat";
swim(){
console.log("Cannot Swim!");
}
}
let lion: Lion = new Dog(); // substitutes
let dog: Dog = new Lion(); // substitutes
let lionTwo: Lion = new Goat();
//let goat: Goat = new Lion(); // IDE & compiler error
console.log("Lion Sound: "+lion.sound);
console.log("Dog sound: "+dog.sound);
console.log("Lion sound: "+lionTwo.sound);
输出