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
注释它。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。