Type & Interface
在 TypeScript 中,interface 和 type 都可以用来定义对象的结构,但它们之间有一些重要的区别和使用场景。以下是对两者的详细比较:
I. interface 和 type 的相同点
interface 和 type 的相同点都可以用来描述对象结构
都支持扩展(extends/交并集)
都支持对函数、数组、类的类型定义。
示例:描述对象结构
// 使用 interface
interface User {
id: number;
name: string;
}
// 使用 type
type User = {
id: number;
name: string;
};II. interface和type的区别
interface和type的区别区别 1:扩展方式不同
区别 2:interface 支持声明合并,type 不支持
interface 支持声明合并,type 不支持interface支持多次声明,所有声明会自动合并type不支持多次声明,如果重复声明会报错
区别3:type可以定义更复杂的类型
type可以定义更复杂的类型type可以用来定义联合类型,交集类型,条件类型等interface则不支持
区别4:类型别名type 可以用于基本类型和元组
type 可以用于基本类型和元组type可以用来定义基本类型别名和元组类型。interface不支持
区别 5:interface 可以被类实现,type 不行
interface 可以被类实现,type 不行interface可以被类实现(implements)type不支持类的实现
总结:interface vs type
interface vs type特性
interface
type
定义对象结构
✅
✅
扩展方式
extends
&
声明合并(重复声明)
✅
❌
定义联合类型
❌
✅
基本类型别名
❌
✅
定义元组类型
❌
✅
类实现
✅
❌
何时使用interface 和 type
interface 和 type使用场景
推荐使用
定义对象结构
interface
需要声明合并
interface
定义联合类型或基本类型别名
type
定义复杂类型(交集、条件类型)
type
定义类的实现
interface
💡总结建议:
大多数情况下,使用
interface定义对象结构和类如果需要定义联合类型、基本类型别名或更复杂的类型逻辑时,用
type
最后更新于
这有帮助吗?