interface 和 type 有什么区别?什么时候用哪个?
两者都能描述对象/联合类型,主要差异:
| 维度 | interface | type |
|---|---|---|
| 扩展方式 | extends 继承 |
& 交叉类型 |
| 合并声明 | ✅ 同名自动合并 | ❌ 不可重复声明 |
| 联合/元组 | 不支持 | 支持 A | B、[string, number] |
| 实现类 | 可被 implements |
同样可 |
interface User { name: string }
interface Admin extends User { role: string }
type ID = string | number
type Point = [number, number]建议:描述对象结构、需被类实现或要声明合并 → 用 interface;联合/交叉/元组/映射类型 → 用 type。现代项目二者越来越趋同,团队统一约定即可。