Skip to content

interface 与 type:开放扩展、组合表达与工具类型兼容

主题边界

  • interface 更偏向描述对象形状与可扩展契约,type 更偏向给任意类型表达式起别名。
  • 这不是“谁更高级”的问题,而是表达目标不同。

机制与流程

  • interface 支持声明合并和 extends,适合库类型扩展、面向对象式契约描述和公共 API。
  • type 可以表示联合、交叉、条件类型、映射类型、元组、原始类型等更广泛的类型表达式。
  • 很多工具类型操作的目标最终仍是 type 层面的类型计算。

关键差异

  • 给对象协议建模时,两者常可互换;涉及联合、条件分发、模板字面量时通常必须用 type
  • 公共声明扩展如给第三方库补类型时,interface 的声明合并更自然。

边界条件

  • 不要把 interface 和运行时 class 或接口关键字的传统 OOP 含义强绑定。
  • 大量交叉类型叠加会让类型错误变得难读,未必比 interface 继承更清晰。

工程落点

  • 团队约定通常会区分公共对象协议与复杂类型运算,分别偏向 interfacetype
  • 理解两者边界能减少类型系统膨胀、错误信息失真和库类型扩展困难。

相关主题