gpt4 book ai didi

typescript - 在 typescript 中使用 never 关键字

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:15 25 4
gpt4 key购买 nike

TS 文档说:

the never type represents the type of values that never occur. Variables also acquire the type never when narrowed by any type guards that can never be true.

我不明白它的用法,任何人都可以通过一些例子给我一个答案。

最佳答案

  1. never 类型表示永远不会出现的值的类型。

它可能是永远不会返回的函数的返回类型:

const reportError = function () {
throw Error('my error');
}

const loop = function () {
while(true) {}
}

这里,reportErrorloop 类型都是() => never

  1. 当被任何永远不可能为真的类型保护缩小时,变量也会获得 never 类型

使用 typeofinstanceofin 等运算符,我们可以缩小变量类型。我们可能会缩小类型的方式,即我们确信这个变量在某些地方永远不会出现。

function format(value: string | number) {
if (typeof value === 'string') {
return value.trim();
} else {
return value.toFixed(2); // we're sure it's number
}

// not a string or number
// "value" can't occur here, so it's type "never"
}
  1. 常见用例

除了更好的类型安全性(如上述情况),never 类型还有另一个用例 - 条件类型。使用 never 类型,我们可以排除一些不需要的类型:

type NonNullable<T> = T extends null | undefined ? never : T;

type A = NonNullable<boolean>; // boolean
type B = NonNullable<number | null>; // number

关于typescript - 在 typescript 中使用 never 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42291811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com