type 和 interface 有哪些区别?
比较对象建模、联合类型、扩展与声明合并。
参考答案
interface 和 type 都能描述对象结构。interface 支持声明合并,可通过 extends 扩展;类型别名可以描述联合类型、元组、原始类型别名以及映射类型等。
TypeScript
interface User { name: string }
interface Admin extends User { role: "admin" }
type Result = { ok: true; value: User }
| { ok: false; error: string };
组合对象时,extends 与交叉类型遇到冲突属性的报错行为不同。公开且需要可扩展的对象契约可优先考虑接口;表达联合关系时使用类型别名更直接。团队一致性也很重要。