type vs interface 关键区别#
特性 interfacetype扩展方式 extends(声明合并)&(交叉类型)同名声明 ✅ 自动合并 ❌ 报错(重复定义) 适用场景 对象结构、类实现 联合类型、元组、复杂类型运算 性能 更快(声明合并优化) 稍慢(需解析类型表达式)
核心差异示例#
1. 扩展方式#
// interface: extends 声明式扩展
interface Animal { name : string }
interface Dog extends Animal { breed : string }
// type: & 交叉类型
type Animal = { name : string }
type Dog = Animal & { breed : string } typescript
2. 同名合并(interface 独有)#
// ✅ interface 自动合并
interface User { name : string }
interface User { age : number } // 合并为 { name, age }
// ❌ type 报错
type User = { name : string }
type User = { age : number } // Error: 重复标识符 typescript
3. type 独有能力#
// 联合类型(interface 做不到)
type Status = 'pending' | 'success' | 'error' ;
// 元组
type Point = [ number , number ];
// 条件类型
type IsString < T > = T extends string ? true : false ;
// 映射类型
type ReadonlyUser = Readonly < User >; typescript
选择建议#
场景 推荐 定义对象结构、类 interface需要多次扩展同一类型 interface联合类型、元组、条件类型 type第三方库类型声明 interface(支持用户扩展)