TypeScript 中,void 是一种表示“无返回值”的类型

TypeScript中的void类型表示"无返回值",主要用于函数返回类型。


它与undefined不同:void强调不应使用返回值,undefined则是具体值类型。


void函数可以不返回或仅return;,而undefined函数必须显式返回undefined。


void变量声明无实用价值,但常用于回调函数表示不关心返回值。


与never类型不同,void表示函数正常执行完毕但不返回值,never表示函数永不返回(如抛出异常或死循环)。


使用void能明确表达函数仅用于执行操作而非返回结果的设计意图。


在 TypeScript 中,void 是一种表示"无返回值"的类型。它通常用于函数的返回类型,表明该函数不会返回任何有意义的值。


1. void 基本用法

TypeScript 复制代码
function logMessage(message: string): void {
  console.log(message);
  // 没有 return 语句,或 return;(不带值)
}
  • 上面的函数 logMessage 不返回任何值,因此其返回类型是 void
  • 如果你尝试返回一个值(比如 return "hello";),TypeScript 会报错。

2. voidundefined 的区别

  • 在 JavaScript 中,没有显式返回值的函数实际上会返回 undefined
  • 但在 TypeScript 中,void 类型更强调"不应该使用返回值 ",而 undefined 是一个具体的值类型。
TypeScript 复制代码
function f1(): void {
  // 合法
}

function f2(): undefined {
  return undefined; // 必须显式返回 undefined
}

注意:在严格模式下,不能将 void 类型赋值给其他类型(如 let x: void = f1(); 虽然合法,但 x 几乎无法使用)。


3. 实际使用中的注意事项

  • 不要将 void 用于变量声明(除非特殊情况):
TypeScript 复制代码
let unusable: void = undefined; // 技术上可行,但没实际用途
  • 因为 void 只能被赋值为 undefined(在非严格模式下)或 null(如果启用了 --strictNullChecks 则只能是 undefined)。

  • 回调函数中常见 void

TypeScript 复制代码
function process(callback: () => void) {
  callback();
}
  • 这里表示 callback 不需要返回值(即使它返回了,调用方也不会使用)。

4. 与 never 的区别

  • void:函数执行完毕,但不返回值。
  • never:函数永远不会正常结束(例如抛出异常或无限循环)。
TypeScript 复制代码
function throwError(): never {
  throw new Error("Oops!");
}

function infiniteLoop(): never {
  while (true) {}
}

总结

类型 含义 典型场景
void 无返回值(可能隐式返回 undefined 日志、副作用函数
undefined 明确的未定义值 可选属性、初始化状态
never 永不返回 抛异常、死循环

使用 void 能让代码意图更清晰,告诉开发者:"这个函数是用来做事情的,不是用来获取结果的。"

相关推荐
吴声子夜歌1 小时前
TypeScript——泛型
前端·git·typescript
吴声子夜歌5 小时前
TypeScript——类型基础(二)
linux·ubuntu·typescript
Wect9 小时前
LeetCode 215. 数组中的第K个最大元素:大根堆解法详解
前端·算法·typescript
必然秃头9 小时前
下篇:TypeScript 高级特性(高级类型、类型操作、最佳实践)
typescript
吴声子夜歌11 小时前
TypeScript——内置工具类型、类型查询、类型断言和类型细化
linux·ubuntu·typescript
楚轩努力变强11 小时前
2026 年前端进阶:端侧大模型 + WebGPU,从零打造高性能 AI 原生前端应用
前端·typescript·大模型·react·webgpu·ai原生·高性能前端
吴声子夜歌12 小时前
TypeScript——索引类型、映射对象类型、条件类型
git·ubuntu·typescript
吴声子夜歌12 小时前
TypeScript——局部类型、联合类型、交叉类型
javascript·git·typescript
紫_龙1 天前
最新版vue3+TypeScript开发入门到实战教程之路由详解三
前端·javascript·typescript