声明方式
- Interface 的声明方式:
interface Info {
name: string
age: number
}
- Type 声明方式:
type Info = {
name: string
age: number
}
扩展性
- Interface 可以使用 extends 关键字实现继承:
interface Info {
name: string
}
interface extendsInfo extends Info {
age: number
}
- Type 也可以使用 "&" 实现类型的组合,但无法使用extends 实现继承:
type Info = {
age: number
}
type ComInfo = Info & {
name: string
}
用途
- Interface 通常定义对象的结构,包括类的定义、对象的形状等。
interface Person {
name: string
age: number
}
Interface 更倾向于描述可扩展的对象类型。
- Type 更灵活,可以定义基本类型、联合类型和元组:
type StringOrNumber = string | number;
type NameAndAge = [string, number];
合并声明
- Interface 可以合并多个同名声明:
interface MyInterface {
name: string;
}
interface MyInterface {
age: number;
}
// MyInterface = { name: string; age: number; }
应用范围
- Interface 通常用来定义对象等,比如服务端返回的参数;
- Type 通常用来定义联合类型、基本类型的别名和 Interface 无法定义的类型;