TypeScrip8

never类型

因为a定义的时候给了两种类型,所以Ts会自动解析,认为它是不可能的,所以给了一个never类型,这种类型会报错。

 

TypeScripe 将使用 never 类型来表示不应该存在的状态

// 返回never的函数必须存在无法达到的终点
// 因为必定抛出异常,所以 error 将不会有返回值
function error(message: string): never {
    throw new Error(message);
}

// 因为存在死循环,所以 loop 将不会有返回值
function loop(): never {
    while (true) {
    }
}

never 与 void 的差异

//void类型只是没有返回值 但本身不会出错
function Void(): void {
    console.log();
}

//只会抛出异常没有返回值
function Never(): never {
    throw new Error('aaa')
}

never 类型的一个应用场景

interface A {
    type: "wang"
}
 
interface B {
    type: "li"
}
type All = A | B ;
function handleValue(val: All) {
    switch (val.type) {
        case 'wang':
            break;
        case 'li':
            break
        default:
            //兜底逻辑 一般是不会进入这儿如果进来了就是程序异常了
            const check:never = val;
            break
    }
}

如果新加了一个接口,必须手动去处理switch,否则就会报错

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值