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。现代项目二者越来越趋同,团队统一约定即可。

同分类其他题目