gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1465
阅读:50回复:0

TS type和interface区别

楼主#
更多 发布于:2025-06-26 09:47
TypeScript中,interfacetype均用于定义类型,但两者在功能、使用场景及语法上有显著差异:


1.合并行为‌。  (‌interface支持声明合并‌,可重复定义)

‌interface支持声明合并‌:若多次声明同一接口名称(例如interface Person {}重复定义),TypeScript会自动合并这些接口,形成一个包含所有声明的属性的单一接口。‌‌‌‌
‌type不支持声明合并‌:若重复定义同一类型别名(例如type Person = {}重复定义),会导致编译错误。‌‌‌‌


2. ‌扩展方式‌ / 继承方式 。

‌interface通过extends关键字实现继承‌:可以继承其他接口或类(例如interface Dog extends Animal {}),支持多继承和面向对象设计。‌‌‌‌
‌type通过交叉类型(&)模拟继承‌:虽然不能直接扩展类型别名,但可通过交叉类型(如type Dog = Animal & { breed: string })实现类似扩展的效果。‌‌‌‌

3.使用场景‌。

‌interface适用于描述对象结构‌:主要用于定义对象的形状(属性、方法等),适合面向对象编程和声明合并场景。‌‌‌‌
‌type适用于复杂类型组合‌:支持联合类型(如number | string)、元组、索引签名等复杂类型定义,且语法更灵活。‌‌‌‌

‌4.语法差异‌。

‌interface直接定义属性或方法签名‌:例如interface Person { name: string; }  或函数签名定义。‌‌

‌type需使用对象字面量或联合类型‌:例如type Person = { name: string };  或联合类型定义(如type Status = "active" | "inactive";)。‌‌

‌总结‌:若需描述对象结构且可能扩展(如类实现接口),优先使用interface;若需定义复杂类型组合或灵活的类型别名(如联合类型、元组),则选择type。两者选择需根据具体需求和团队编码规范决定。
游客


返回顶部