Skip to content
← Back to rules

typescript/no-meaningless-void-operator 正确性

This rule is turned on by default when type-aware linting is enabled.
💭 This rule requires type information.
An auto-fix is available for this rule.

它的作用

此规则禁止在表达式类型已经是 voidundefined 时使用 void 操作符。

为什么这是不好的?

void 操作符在需要执行一个表达式并强制其求值为 undefined 时非常有用。然而,在已经为 voidundefined 类型的表达式上使用 void 是无意义的,会为代码增加不必要的复杂性。

示例

以下为 错误 的代码示例:

ts
function foo(): void {
  return;
}

void foo(); // 无意义,foo() 已经返回 void

void undefined; // 无意义,undefined 已经是 undefined

async function bar() {
  void (await somePromise); // 如果 somePromise 解析为 void,这无意义
}

以下为 正确 的代码示例:

ts
function getValue(): number {
  return 42;
}

void getValue(); // 有意义,将 number 转换为 void

void console.log("hello"); // 有意义,console.log 返回 undefined,但我们希望显式表达

function processData() {
  // 一些处理逻辑
}

processData(); // 不需要 void,因为我们不关心返回值

配置

此规则接受一个包含以下属性的配置对象:

checkNever

type: boolean

default: false

是否检查对类型为 never 的表达式应用 void 情况。

如何使用

要通过配置文件或 CLI 启用 此规则,可以使用:

json
{
  "rules": {
    "typescript/no-meaningless-void-operator": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-meaningless-void-operator

参考资料