在 TypeScript 中,interface
和 type
都可以用来定义对象的形状,但它们有一些关键的区别和各自的适用场景。以下是两者的区别和使用场景:
区别
- 声明合并 (Declaration Merging):
interface
可以声明多次,并且会自动合并。type
则不支持声明合并。
interface User { name: string; } interface User { age: number; } const user: User = { name: 'Alice', age: 25, }; // 合法,User 接口自动合并
type User = { name: string; }; type User = { age: number; }; // 错误,类型别名不能重复声明
- 扩展性:
interface
支持使用extends
进行扩展。type
可以使用交叉类型(&
)进行组合。