用途:该技能依据 TypeScript 官方手册建议,指导在 TypeScript 中何时使用 interface、何时使用 type,核心原则是“优先使用 interface,直到需要 type 的特性”。
主要能力:
- 适用 interface 的场景:对象类型定义、扩展其他对象类型、类实现、声明合并(增强已有类型)。
- 适用 type 的场景:联合类型(如 type Status = 'pending' | 'approved' | 'rejected')、映射类型(如 type Readonly<T> = { readonly [K in keyof T]: T[K] })、条件类型(如 type NonNullable<T> = T extends null | undefined ? never : T)、元组类型(如 type Point = [number, number])、函数类型(interface 也可用,如 type Handler = (event: Event) => void)。
- 扩展对象类型时优先使用 interface extends 而非交叉类型(&)。
理由一:更好的错误信息。使用 interface extends 时,若扩展的属性不兼容,TypeScript 会在定义处立即报错;而交叉类型只在访问不兼容属性时才报错,问题更难发现。
理由二:更好的 TypeScript 性能。interface 按名称缓存,类型只计算一次并复用;交叉类型每次使用都会重新计算,复杂类型下会拖慢类型检查。
使用方式:在定义对象类型、扩展类型或选择 interface 与 type 别名时参考上述规则。
限制:资料未提供安装命令、平台支持、收费信息或具体使用步骤,暂未提供。