随记-never类型的妙用~

文章目录

    • 1、never类型说明
    • 2、用处1
    • 3、用处2

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

1、never类型说明

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

随记-never类型的妙用~_第1张图片

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 的可能类型

随记-never类型的妙用~_第2张图片

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");

随记-never类型的妙用~_第3张图片

你可能感兴趣的:(TS,javascript,开发语言,前端,typescript,vue)