interface/type的关区别和使用
总结
- interface:可扩展,支持声明合并,适合定义对象和函数,支持extends
- type: 更灵活,类型别名,但不能重复定义,支持联合/交叉类型
interface:
- 只能定义对象结构
interface User {name: string;age: number;
}
- 声明合并
interface User {name: string;
}interface User {age: number;
}// 自动合并为:
// interface User { name: string; age: number; }const u: User = { name: 'Tom', age: 20 }; // ✅ 正确
- 继承与扩展
interface Person {name: string;
}interface User extends Person {age: number;
}
实现类
// implements type(只要 type 是对象结构)
class User implements UserInterface {// 必须实现 interface 定义的结构
}
type:
- 类型别名
type User = {name: string;age: number;
};// 更强大的能力:
type ID = string | number;
type Point = [number, number];
type Callback = (data: string) => void;
- 不支持重复定义
- 交叉类型
type Person = {name: string;
};type User = Person & {age: number;
};