在 TypeScript 中,interface
和 type
都用于定义对象的形状(shape)或类型,但它们之间存在一些关键的区别和适用场景。了解这些区别有助于你根据具体需求选择最合适的工具。
1. 声明合并(Declaration Merging)
- Interface:支持声明合并。如果你定义了两个相同名称的接口,TypeScript 会将它们合并成一个接口。这在你需要扩展一个库中的接口时非常有用。
- Type:不支持声明合并。如果你尝试定义两个相同名称的类型别名,TypeScript 会报错,因为它认为这是一个重复的定义。
2022年1月9日大约 2 分钟