1.给类型取别名
别名可以是联合类型
type UserList = Array<User|Account>;
let userList:UserList =[
{name:'xxx',age:44},
{account:'xxxxx',password:'xxxxxx'},
]
2.顶替interface 定义对象类型
interface 定义对象类型
interface User{
name:string,
age:number
}
let user:User = {name:'xxx',age:444};
type 定义对象类型
type User ={
name:string,
age:number
}
let user:User = {name:'xxx',age:444};
3.interface 可以进行类型的自动合并 type不行
interface 进行类型的自动合并
interface User{
name:string,
age:number
}
interface User{
like:Array<string>
}
let user:User = {name:'xx',age:40,like:['x','xxx','xxx']}
type 不能进行类型的自动合并
type User={
name:string,
age:number
}
type User={ //报错 相同别名的类型冲突
like:Array<string>
}
let user:User = {name:'xx',age:40,like:['x','xxx','xxx']}
总结
相同:
- interface 和 type 都可以 给 对象或函数 定义类型
不同:
- interface 支持多个相同类型名的类型自动合并,type不支持相同类型的合并
- type 可以给 复杂的类型 取别名,方便以后多次使用,简化代码, interface 不支持去别名