区别1
- 使用 interface 和 type 都是表示给定数据结构的常用方法。
- 定义的方式略有不同。
- type 定义的时候有 “=” 符号
interface User {
name: string,
age: number
}
type User = {
name: string,
age: number
}
区别2
- interface 可以多次声明同一接口。它们将合并在一起形成一个接口定义。
- type 只能声明一次。
interface:可以多次声明,并最终可共同复用;
interface User{
name: string
}
interface User{
age: number
}
let Person: User = {
name: 'myName',
age: 100
}
type:再次声明会报错
type User = {
name: string
}
type User = { // 报错,Throw error: Duplicate identifier
age: number
}
区别3
- 继承方式的不同,interface通过extend方式继承,type通过 & 符号继承;
interface
interface PointX {
x: number
}
interface Point extends PointX {
y: number
}
type
type PointX = {
x: number
}
type Point = PointX & {
y: number
}
interface 和 type 可以相互拓展
interface
type PointX = {
x: number
}
interface Point extends PointX {
y: number
}
type
interface PointX {
x: number
}
type Point = PointX & {
y: number
}
注意:
- 如果希望定义一个变量类型,就用 type,如果希望能够继承并约束,就用 interface。
- 如果您是库的作者或为外部库创建类型定义,请使用 interface。方便其他人也可以扩展它们。
- 如果你不知道该用哪个,建议使用 type。