乐闻世界logo
搜索文章和话题

Typescript 中的“ never ”和“ void ”有什么区别?

8 个月前提问
6 个月前修改
浏览次数51

1个答案

1

在TypeScript中,“never”和“void”是两种非常特殊的类型,它们在函数的返回类型定义中扮演着重要的角色,但它们的用途和含义有所不同。

Void

void 类型通常用于标识一个函数没有返回值。当函数执行完毕后,并不返回任何内容,我们通常将这个函数的返回类型设置为 void。这主要用在函数主要进行操作或副作用(例如打印日志、修改全局变量等),而不需要返回数据的场景。

例如:

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

在这个例子中,logMessage 函数用于在控制台输出一个信息,它不需要返回任何内容,因此使用 void 类型作为返回类型。

Never

never 类型表示的是那些永远无法正常结束(无法到达终点)的函数的返回类型。这包括抛出异常的函数和无限循环的函数。

例如:

typescript
function throwError(errorMsg: string): never { throw new Error(errorMsg); } function infiniteLoop(): never { while (true) { } }

在这两个函数中,throwError 函数永远不会正常结束,因为它总是会抛出一个错误;infiniteLoop 函数也永远不会结束,因为它进入了一个无限循环。这两种情况下,函数的返回类型使用 never,意味着这个函数不会有任何正常的返回路径。

总结

总的来说,void 用于那些没有返回任何值的函数,而 never 用于那些根本就不会有返回的函数(由于异常或无限循环等原因)。理解这两者的区别,有助于更准确地描述函数的行为和预期。

2024年6月29日 12:07 回复

你的答案