Typescript 中从来没有的东西

never类型在打字稿中很少使用,仅当函数永远不会到达return statement时才使用。

发生这种情况主要有两个原因:

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

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

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

不要与void类型混淆:

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

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

然而,对于never类型,函数永远不会返回任何东西,所以我们用它注释never说我们永远不会到达这个函数的结尾。我们永远不会完全执行该功能。

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

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

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

我们只在函数never结束时用类型 never 注释一个函数。如果它只可能抛出一个错误,我们就不会用never.

What is never in Typescript

发表评论