🔄 声明合并
// interface 支持声明合并
interface User {
name: string;
}
interface User {
age: number;
}
// 合并后的接口
const user: User = {
name: 'Alice',
age: 30
};
// type 不支持声明合并
type Person = {
name: string;
};
type Person = { // Error: 重复标识符
age: number;
};
💡
声明合并用途
声明合并常用于扩展第三方库的类型定义,如为 window 对象添加新属性。
✅ 最佳实践
// ✅ 对象类型:优先使用 interface
interface User {
id: string;
name: string;
}
// ✅ 联合类型:使用 type
type Status = 'active' | 'inactive';
type ID = string | number;
// ✅ 元组:使用 type
type Point = [number, number];
// ✅ 工具类型:使用 type
type ReadonlyUser = Readonly<User>;
// ✅ 需要扩展第三方类型:使用 interface
declare global {
interface Window {
myCustomProperty: string;
}
}
💡
选择建议
对象类型优先使用 interface,其他复杂类型(联合、元组、工具类型)使用 type。