目录一、 第一层总述定下基调二、 第二层核心功能区别展现技术广度1. 声明合并Declaration Merging—— 最本质的区别2. 覆盖能力的广度3. 继承方式Extends vs Intersections三、 第三层底层逻辑与性能展现技术深度四、 第四层最佳实践展现工程经验五、 总结版面试官最喜欢的回答模板回答思路简答模板Tips如果面试官追问“为什么 interface 性能更好”在 TypeScript 面试中interface接口和type类型别名的区别是必考题。如果你只回答“它们很像但语法不同”那只是及格分。要答出“精彩”你需要从功能差异、设计哲学、底层性能、以及最佳实践四个维度来系统化回答。你可以按照以下逻辑来组织你的回答一、 第一层总述定下基调“从功能上看interface和type非常相似在大多数场景下是可以互换的。由于 TypeScript 近几个版本的演进两者的边界越来越模糊。但从本质上讲interface是为了定义‘对象的形状’Shape而type是给‘类型’起一个名字Alias。”二、 第二层核心功能区别展现技术广度面试官最想听到的几个硬核区别1. 声明合并Declaration Merging—— 最本质的区别这是interface独有的特性。Interface支持同名合并。如果你定义了两个同名的接口TS 会自动将它们合并为一个。这在开发插件、第三方库时非常有用允许用户扩展库的接口。Type不支持。如果定义两个同名的type编译器会直接报错。interface User { name: string } interface User { age: number } // 结果User 拥有 name 和 age type User { name: string } type User { age: number } // Error: Duplicate identifier2. 覆盖能力的广度Type更加全能。它可以定义基本类型别名、联合类型Union、元组Tuple、映射类型等。Interface只能定义对象、函数、类的形状无法直接表示string | number这种联合类型。type ID string | number; // Interface 做不到 type Data [number, string]; // Interface 做不到3. 继承方式Extends vs IntersectionsInterface使用extends关键字。TS 会在编译时检查接口之间是否存在冲突比如同名属性但类型不兼容并给出清晰的错误提示。Type使用交叉类型。它是将多个类型合并如果存在冲突属性会变成never报错信息通常没有interface那么直观。三、 第三层底层逻辑与性能展现技术深度这是一个加分项体现你对 TS 源码或底层性能的关注“在大型项目中interface的类型检查性能通常略优于type。因为interface是在内部建立了一个‘类型缓存’并进行属性兼容性检查而union类型或者复杂的type交叉类型由于每次都要重新计算其组成部分的递归合并在处理超大规模复杂类型时可能会导致编译器性能下降。当然在普通业务代码中这种差异几乎无法察觉。”四、 第四层最佳实践展现工程经验这也是面试官判断你是否真的写过大型项目的重要依据。你可以给出自己的“准则”“在实际工程中我遵循以下原则优先使用interface定义组件 Props、State、API 返回数据、模块接口时优先用interface。因为它更符合面向对象的契约精神且支持声明合并方便扩展。必须使用type的场景需要用到联合类型、元组、计算属性类型Mapped Types或者基本类型别名时必须使用type。对外发布库如果我开发的是一个给外人用的库公共 API 一定要用interface因为这样用户可以通过声明合并来扩展我定义的类型。”五、 总结版面试官最喜欢的回答模板你可以直接这样说“interface和type的核心差异可以概括为三点首先是‘声明合并’interface支持同名合并这对于扩展第三方库非常重要而type不支持。其次是‘表达能力’type更加灵活可以定义联合类型、元组等而interface专注于描述对象的结构。最后是‘哲学定位’interface更多的是一种契约协议适合定义组件和数据模型type则是为了逻辑上的组合和简化名称。在工程实践中我通常建议**‘能用 interface 就用 interface必须用 type 才用 type’** 这样既能保证性能又能保持代码的可扩展性。”回答思路都能定义对象类型type更灵活interface支持声明合并对象结构偏interface复杂类型运算偏type简答模板interface和type都可以定义类型。interface更适合描述对象结构、类契约并且支持声明合并type更灵活除了对象还能定义联合类型、交叉类型、元组、函数类型等。一般来说定义对象结构我更倾向于用interface涉及类型组合和类型运算我更倾向于用type。Tips如果面试官追问“为什么 interface 性能更好”你可以补充说interface是命名的类型TS 编译器会缓存其结果。而type往往包含逻辑计算如交叉、映射编译器在处理时有时需要进行深层的属性对比和推导尤其是在处理深层嵌套的对象时interface的结构化存储更利于 TS 内核做快速匹配。