重拾TypeScript-18 联合类型和类型保护

interface Waiter{

    anjiao:boolean;

    say:()=>{}

}

 

interface Teacher{

    anjiao:boolean;

    skill:()=>{};

}

//只要参数有或者两种以上,就叫做联合类型

function judgeWho(animal:Waiter | Teacher){

    //他不知道这个方法是在Waiter里还是Teacher

    // animal.say()

    //类型保护,断言, true 还是 false

    if(animal.anjiao){

        (animal as Teacher).skill();

    }else{

        (animal as Waiter).say();

    }

}

 

function judgeWhoTow(animal:Waiter | Teacher){

    if('skill' in animal){

        animal.skill()

    }else{

        animal.say()

    }

}


 

function add(first : string | number ,second:string | number){

 

    if(typeof first === "string" || typeof second === "string"){

        return `${first}${second}`;

    }

 

    return first + second;

}

 

class NumberObj{

    count : number;

}

 

function addObj(first : object | NumberObj , second :object | NumberObj){

    if(first instanceof NumberObj && second instanceof NumberObj){

        return first.count + second.count

    }

    return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值