问答题1130/1593Typescript中never 和 void 的区别?

难度:
2021-07-08 创建

参考答案:

nevervoid 都是用来表示函数的返回类型,但它们有着不同的含义和用途。

下面是两者的区别和使用场景:

1. void

void 类型表示函数没有返回值,通常用于那些没有返回值的函数。可以把它看作是函数的“空”类型,表示该函数执行完毕后没有任何结果返回。

用法:

  • 函数没有返回值时: 当一个函数没有返回任何内容时,我们通常会将其返回类型设置为 void

    1function logMessage(message: string): void { 2 console.log(message); 3}

    这里的 logMessage 函数没有返回任何值,因此它的返回类型是 void

  • voidundefined 的区别

    • void 表示没有返回值,而 undefined 是一个实际的值,表示变量未被赋值。
    • void 类型的函数中,返回 undefined 或不返回任何内容都是允许的,但不能返回其他类型的值。
    1function example(): void { 2 // 可以返回 `undefined`,也可以不返回任何值 3 return undefined; 4}

总结:

  • void 用于表示函数没有返回值。
  • void 并不是说函数没有任何副作用,它只是指示该函数不返回任何值。

2. never

never 类型表示从不返回的函数,即这些函数无法正常结束,它们要么会抛出错误,要么会进入无限循环。因此,never 类型表示一个函数永远不会返回。

用法:

  • 抛出错误的函数: 如果一个函数总是抛出错误并且没有正常的返回值(即它的执行会被终止),它的返回类型应该是 never

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

    这个 throwError 函数抛出一个错误,因此它的返回类型是 never

  • 无限循环的函数: 如果一个函数进入一个无限循环,也不返回任何东西,它的返回类型也应该是 never

    1function infiniteLoop(): never { 2 while (true) { 3 // 无限循环 4 } 5}

    由于 infiniteLoop 函数会永远执行下去,永远不会返回,它的返回类型是 never

总结:

  • never 类型用于表示那些不会正常返回的函数,通常是因为它们会抛出异常或进入无限循环。
  • never 强调了函数的不可达性,即函数不会正常结束。

3. voidnever 的区别总结

特性voidnever
定义表示没有返回值的函数。表示永远不会返回的函数,通常用于抛出异常或进入无限循环。
返回值可以返回 undefined,也可以不返回任何值。不能返回任何值,通常抛出异常或进入无限循环。
用法场景用于没有返回值的函数,如事件处理函数。用于那些无法正常返回的函数,如抛出错误的函数或无限循环函数。
示例function log(): void { console.log('Hello'); }function throwError(): never { throw new Error('Error'); }

最近更新时间:2024-12-25

赞赏支持

预览

题库维护不易,您的支持就是我们最大的动力!