type特有的功能
- 最大的区别,interface的语法规定,必须写一个{},中间是
键值对,因此无法定义基本数据类型别名,而type可以
type A = string
// 下面的代码肯定要给你一个Error
interface A1 {string}
- type可以声明
联合类型.而interface不行
type A = {name: string} | {age: number}
- type可以声明元组
type A = [string, number, string, boolean]
interface特有的功能
interface声明的是接口,可以合并,type声明的类型别名不行
interface A {name: string}
interface A {age: number}
const a:A = {
name: 'nihao',
age: 15
}
type B = {name: string}
type B = {age: number}
最后说一下我之前在其他人的帖子里看到的一个问题,即签名索引使用interface会报错
这是因为接口定义的类型不是固定的(接口声明合并),ts会认为接口无法分配