1.interface和type都是用来定义对象类型
2.如果是定义非对象类型,通常推举type,比如Direction,Alignment,一些function
**如果是定义对象类型的区别**
1.interface 可以重复对某个接口定义属性和方法
2.type定义是别名,别名是不能重复的
比如 interface name{
name:string
}
interface name{
age:number
}
其实合并等价于name{
name:string,
age:number
}
type name{
name:string
}
type name{
age:number
}
//直接报错
相同点都可以描述一个对象或者函数
**type 可以而 interface 不行**type 可以声明基本类型别名,联合类型,元组等类型
// 基本类型别名
type Name = string
// 联合类型
interface Dog {
wong();
}
interface Cat {
miao();
}
type Pet = Dog | Cat
// 具体定义数组每个位置的类型
type PetList = [Dog, Pet]