美文网首页
ts中的交叉类型和联合类型

ts中的交叉类型和联合类型

作者: nora_wang | 来源:发表于2020-05-30 17:31 被阅读0次

    1.交叉类型
    将多个类型合并成一个类型,该类型具有所有类型的特性(取他们类型的合集)

    interface myInter1 {
        name:string;
        fun1():void
    }
    interface myInter2 {
        fun2():void
    }
    
    // 此时定义的jcType是myInter1和myInter2的交叉类型,其中必须包含这两个接口中定义的属性
    let jcType :myInter1 & myInter2 = {
        name:'haha',
        fun1() {},
        fun2() {},
    }
    

    2.联合类型
    相当于取他们类型的交集,可以给变量定义多个类型。

    // 联合类型 (只需满足其中一个接口类型所定义的属性)
    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)
        }
    }
    
    // 如果变量类型是多个类的联和,那么
    function f(num:number) {
        let lhType = num===1?new Dog1('rose'):new Dog2(3)
        // 此时lhType去调用类中的方法时,只能调用他们的相同属性名的值
        lhType.run()
    }
    

    相关文章

      网友评论

          本文标题:ts中的交叉类型和联合类型

          本文链接:https://www.haomeiwen.com/subject/tohhzhtx.html