Skip to content
← Back to rules

eslint/no-unsafe-optional-chaining 正确性

This rule is turned on by default.

它的作用

禁止在不允许 undefined 值的上下文中使用可选链

为什么这是个问题?

可选链(?.)表达式可能会短路并返回 undefined。 因此,将一个已求值的可选链表达式当作函数、对象、数字等处理, 可能导致 TypeError 或意外结果。例如:

示例

此规则的错误代码示例:

javascript
var obj = undefined;
1 in obj?.foo; // TypeError
with (obj?.foo); // TypeError
for (bar of obj?.foo); // TypeError
bar instanceof obj?.foo; // TypeError
const { bar } = obj?.foo; // TypeError

配置

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

disallowArithmeticOperators

type: boolean

默认值: false

禁止对可选链表达式进行算术运算。 如果为 true,则此规则会警告对可选链表达式进行可能产生 NaN 的算术运算。

如何使用

通过配置文件或命令行工具启用此规则,可以使用:

json
{
  "rules": {
    "no-unsafe-optional-chaining": "error"
  }
}
bash
oxlint --deny no-unsafe-optional-chaining

参考资料