1.交叉類型
將多個(gè)類型合并成一個(gè)類型踢故,該類型具有所有類型的特性(取他們類型的合集)
interface myInter1 {
name:string;
fun1():void
}
interface myInter2 {
fun2():void
}
// 此時(shí)定義的jcType是myInter1和myInter2的交叉類型烂完,其中必須包含這兩個(gè)接口中定義的屬性
let jcType :myInter1 & myInter2 = {
name:'haha',
fun1() {},
fun2() {},
}
2.聯(lián)合類型
相當(dāng)于取他們類型的交集,可以給變量定義多個(gè)類型枚赡。
// 聯(lián)合類型 (只需滿足其中一個(gè)接口類型所定義的屬性)
let lhType : myInter1 | myInter2={
name:'',
fun1(): void {}
}
class Dog1{
constructor(public name: string) {}
run(){
console.log(this.name)
}
}
class Dog2{
constructor(public age: number) {}
run(){
console.log(this.age)
}
}
// 如果變量類型是多個(gè)類的聯(lián)和,那么
function f(num:number) {
let lhType = num===1?new Dog1('rose'):new Dog2(3)
// 此時(shí)lhType去調(diào)用類中的方法時(shí)迫横,只能調(diào)用他們的相同屬性名的值
lhType.run()
}