TypeScript 中的 never 是什么

never 类型在 TypeScript 中很少使用,只有当函数永远不会到达 return 语句时。

这主要有两个原因:

  • 函数抛出错误
  • 函数无限循环

让我们看一个最常见的用例示例——函数抛出错误,因此它永远不会到达 return 语句:

function throwError(message: string): never {
  throw new Error(message);
}

不要与 void 类型混淆:

function logger(message: string): void {
  console.log(message);
}

不同之处在于,void 用于不返回任何内容的函数,从技术上讲,它可以返回 null 或 undefined。 如果我们不小心从返回 void 的函数中返回了某些东西,我们会收到一条错误消息。

然而,对于 never 类型,函数永远不会返回任何内容,因此我们用 never 注释它,表示我们永远不会到达该函数的末尾。 我们永远不会完全执行该功能。

很少有函数应该使用 never 作为返回值来输入。 例如,如果我们只在某些时候抛出错误,我们不应该用 never 注释函数:

function sometimesThrowError(message: string): number {
  if (!message) {
    throw new Error(message);
  }

  return 42;
}

在上面的场景中,我们仍然应该将函数注释为返回一个 number,而不是 never 注释,因为有一个场景是函数到达它的结尾并返回。

我们只用 never 类型注释一个函数,当它永远不会到达它的结尾时。 如果它只可能抛出一个错误,我们不会用 never 注释它。

免责声明:
1.本站所有内容由本站原创、网络转载、消息撰写、网友投稿等几部分组成。
2.本站原创文字内容若未经特别声明,则遵循协议CC3.0共享协议,转载请务必注明原文链接。
3.本站部分来源于网络转载的文章信息是出于传递更多信息之目的,不意味着赞同其观点。
4.本站所有源码与软件均为原作者提供,仅供学习和研究使用。
5.如您对本网站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。
火焰兔 » TypeScript 中的 never 是什么