typescript面试题
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;
};
浙公网安备 33010602011771号