联合类型
通过 |
将变量设置多种类型,赋值时可以根据设置的类型来赋值。
举例说明:
- 联合基础类型
let age: number | string;
age = 10; //OK
age = "12"; //OK
age = true; //Error
- 联合对象类型
interface Cat {
name: string
miao:() => string
}
interface Dog {
name: string
wang: () => string
}
const Animal = (): Cat | Dog => {
return {
name: "",
miao: ():string => {return "2333"}
}
}
let obj = Animal();
obj.name; //ok
obj.miao() //Error , Property 'miao' does not exist on type 'Dog'
可以看到,联合基础类型的时候只要符合定义类型时的其中一个就可以了。然而联合复杂类型,如接口时,你可以只满足某一个接口的属性,但获取时,只能获取到复杂类型的公共属性,不同的属性是会报错的。
交叉类型
多种类型的集合,交叉的对象将具有所有类型的所有成员
interface Cat {
name: string
miao:() => string
}
interface Dog {
name: string
wang: () => string
}
const Animal = (): Cat & Dog => {
return {
name: "",
// 使用交叉类型之后,就要两个接口所有的属性都得满足
miao: ():string => {return "miaomiao"},
wang: ():string => {return "wangwang"}
}
}
let obj = Animal();
obj.name; //ok
obj.miao() //ok
网友评论