Skip to content
← Back to rules

typescript/no-confusing-void-expression 严格检查

💭 This rule requires type information.
An auto-fix is available for this rule.

它做了什么

此规则禁止在箭头函数返回等容易引起混淆的位置使用 void 表达式。

为什么这是不好的?

void 操作符在需要执行表达式但希望其求值为 undefined 时非常有用。然而,当在返回值有意义的上下文中使用时,它可能会造成混淆,特别是在箭头函数和条件表达式中。

示例

此规则的 错误 代码示例:

ts
// 箭头函数返回 void 表达式
const foo = () => void bar();

// 条件表达式
const result = condition ? void foo() : bar();

// void 在条件语句中
if (void foo()) {
  // ...
}

此规则的 正确 代码示例:

ts
// 正确使用 void
void foo();

// 显式的返回语句
const foo = () => {
  bar();
  return;
};

// 语句表达式
foo();

// 使用 void 的立即调用函数表达式
void (function () {
  console.log("立即执行");
})();

配置

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

ignoreArrowShorthand

type: boolean

default: false

是否忽略返回 void 的箭头函数简写形式。 当为 true 时,允许类似 () => someVoidFunction() 的表达式。

ignoreVoidOperator

type: boolean

default: false

是否忽略使用 void 操作符的表达式。 当为 true 时,允许 void someExpression

ignoreVoidReturningFunctions

type: boolean

default: false

是否忽略调用声明为返回 void 的函数。 当为 true 时,允许类似 x = voidReturningFunction() 的表达式。

如何使用

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

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

参考资料