📜  TypeScript鸭式打字

📅  最后修改于: 2021-01-11 12:54:32             🧑  作者: Mango

打字鸭打字

根据TypeScript,Duck-Typing是一种用于检查更复杂的变量类型的类型兼容性的方法/规则。

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);

输出

在上面的示例中,我们可以看到它不允许用Lion代替Goat,因为Goat类具有其他方法(因此Lion无法进行鸭子输入)。和狮子可以代替鸭子打字,因为狮子不能做狗不能做的事,反之亦然。