TypeScript 鸭子类型

17 Mar 2025 | 阅读 2 分钟

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

TypeScript 使用**鸭子类型**方法,通过检查两个对象是否具有**相同的类型匹配**名称来比较一个对象与另一个对象。 这意味着我们不能更改变量的签名。 例如,如果我们分配一个具有**两个**属性(如 name、address)的对象,并且下次我们分配一个包含更多属性或更少属性的对象,或者两个属性都不是(name、address),那么 TypeScript 编译器将生成**编译时错误**。 这个概念被称为**鸭子类型**。

鸭子类型功能在 TypeScript 代码中提供类型安全。

通过鸭子类型规则,TypeScript 编译器检查一个对象是否与另一个对象相同。

根据鸭子类型方法,两个对象必须具有相同的属性/变量类型。

输出

TypeScript Duck-Typing

在上面的例子中,我们可以看到它不允许用 **Lion** 代替 **Goat**,因为 Goat 类有一个额外的方法(所以 Lion 鸭子类型失败)。 **Dog** 和 Lion 在鸭子类型中是可以替换的,因为狮子能做的狗都能做,反之亦然。