【TS】never类型的妙用

在 TypeScript 中,never 类型表示那些永远不会发生的类型。它通常用于表示不可到达的代码分支或抛出异常的函数
对于 never 类型,只有 never 类型本身可以赋值给 never 类型。但是,并不是所有类型都可以赋值给 never 类型。

1、never类型说明

let abc: never;
let abc2: never;
// abc = 123 // 报错
// abc = '23' // 报错
// abc = {} // 报错

在这里插入图片描述

2、用处1

type requestType = "get" | "post";
function request(method: requestType) {
  if (method == "get") {
    console.log("get");
  } else if (method == "post") {
    console.log("post");
  } else {
    // 在这个里面 method 是 never类型
    const paramCheck: never = method;
  }
}

TS是可以类型收窄的,在 else 里面,把收窄为 never 类型的 method 赋值给 never类型的paramCheck,是没有问题的,是可以编译通过的

但是如果它改变了 requestType 类型,增加了一个 delete 类型,那么就会报错,因为在else 里面类型被收窄为了, delete,delete 赋值给 never 类型的变量会报错,产生一个 编译错误
所以通过这个方法,可以确保 reqest 函数,总是穷尽了所有 requestType 的可能类型

在这里插入图片描述

3、用处2

书写一个函数,他的参数,必须是number 类型,不然就报错

// 
// T extends number  ,可以判断 T 到底是不是number 类型,如果不是的话,这个入参就是 never 类型,不是never类型的值,赋值给never 类型会报错
function addNumber<T>(a: T extends number ? T : never) {
  return a;
}

addNumber(23);
addNumber("23");

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值