在 TypeScript 中,(接口)和 (类型别名)非常相似,在许多情况下可以互换使用。但在现代 TypeScript(尤其是 4.x/5.x 版本)中,它们的区别主要集中在扩展性、表达能力和语义上。 以下是详细的对比总结: 核心区别速览 | 特性 | Interface (接口) | Type (类型别名) | | :--- | :--- | :--- | | 定义对象/函数 | ✅ 支持 | ✅ 支持 | | 声明合并 (Declaration Merging) | ✅ 支持 (自动合并) | ❌ 不支持 (报错重复定义) | | 联合类型 (Union Types) | ❌ 不支持 | ✅ 支持 () | | 基本类型别名 | ❌ 不支持 | ✅ 支持 () | | 元组 (Tuple) | ❌ 语法繁琐 | ✅ 支持 () | | 扩展方式 | 使用 关键字 | 使用 (交叉类型) | | 映射类型 (Mapped Types) | ❌ 不支持 | ✅ 支持 () | | 主要用途 | 定义对象结构、类契约、库的扩展 | 定义联合类型、工具类型、复杂组合 | --- 详...