2025-07-23 TypeScript接口与类型别名:为何接口会报错? TypeScript接口与类型别名:为何接口会报错? 一、从报错案例看接口的"脾气"最近在重构项目时遇到一个典型问题:typescript interface User { name: string; }// 尝试扩展接口 interface User { age: number; // ✅ 正常合并 }type Account = { id: string; }// 尝试扩展类型别名 type Account = { balance: number; // ❌ 报错:重复标识符 }这个报错揭示了接口(interface)和类型别名(type)的第一个关键差异:声明合并是接口的专属特性。TypeScript编译器会将同名接口自动合并,而类型别名则禁止重复声明。二、本质差异的深层剖析1. 设计哲学的差异 接口:体现"扩展开放"原则,适合描述对象的形状(Shape),天然支持继承和扩展 类型别名:本质是类型表达式别名,更适合组合复杂类型(如联合类型、元组等) 2. 扩展方式对比typescript // 接口扩展 interface Admin extends User { privileges: string[... 2025年07月23日 3 阅读 0 评论