Appearance
interface 与 type:开放扩展、组合表达与工具类型兼容
主题边界
interface更偏向描述对象形状与可扩展契约,type更偏向给任意类型表达式起别名。- 这不是“谁更高级”的问题,而是表达目标不同。
机制与流程
interface支持声明合并和extends,适合库类型扩展、面向对象式契约描述和公共 API。type可以表示联合、交叉、条件类型、映射类型、元组、原始类型等更广泛的类型表达式。- 很多工具类型操作的目标最终仍是
type层面的类型计算。
关键差异
- 给对象协议建模时,两者常可互换;涉及联合、条件分发、模板字面量时通常必须用
type。 - 公共声明扩展如给第三方库补类型时,
interface的声明合并更自然。
边界条件
- 不要把
interface和运行时 class 或接口关键字的传统 OOP 含义强绑定。 - 大量交叉类型叠加会让类型错误变得难读,未必比 interface 继承更清晰。
工程落点
- 团队约定通常会区分公共对象协议与复杂类型运算,分别偏向
interface与type。 - 理解两者边界能减少类型系统膨胀、错误信息失真和库类型扩展困难。