你应该首选interface进行使用(官方建议),如果遇到无法解决的情况,Typescript 会给你一个提示,是否需要另一种声明。
另外,爱好应该是第一位的,如果你喜欢type的工作方式,我建议你选择type。
在说区别之前,我们先来看下一部分写的区别,或者准确的说,这不是区别,而是写法的不同。这一步的主要作用是让初学者更容易分辨喜欢的方式。
定义对象类型(interface写法):
interface State {count: number
}
定义对象类型(type写法):
type State2 = {count: number
}
定义函数类型(interface写法):
interface func {(): void
}
定义函数类型(type写法):
type func2 = () => void
接下来,我将正式解释他们的区别。如果您只是想联想一下,我会创建一个目录供您快速查看。
interface支持:
interface people {name: string
}interface people {age: string
}
此时,people包含了两个属性。分别为name、age。
type不支持:
type people = {name: string
}type people = {age: string
}
它将导致标识符“people”重复。
这里的基元看起来似乎很笼统,你可以将它理解为string,number,boolean 等。
interface不支持:
interface Person extends boolean{}
type支持:
type people = boolean// type people = boolean | sring
在大多数情况下,现在只是写法上有所不同。
正如官方所说的:
type和interface非常相似,在很多情况下您可以在它们之间自由选择。interface的几乎所有功能都可以在type中使用。