no-non-null-asserted-optional-chain
Disallow non-null assertions after an optional chain expression.
在 ESLint 配置 中扩展"plugin:@typescript-eslint/recommended"
可启用此规则。
此规则报告的一些问题可以通过编辑器 建议 手动修复。
如果对象是 null
或 undefined
,则 ?.
可选链表达式提供 undefined
。
使用 !
非空断言来断言 ?.
可选链表达式的结果不可为空可能是错误的。
英:?.
optional chain expressions provide undefined
if an object is null
or undefined
.
Using a !
non-null assertion to assert the result of an ?.
optional chain expression is non-nullable is likely wrong.
大多数时候,要么对象不可为空并且不需要
?.
来查找其属性,要么!
不正确并引入类型安全漏洞。
module.exports = {
"rules": {
"@typescript-eslint/no-non-null-asserted-optional-chain": "error"
}
};
示例
- ❌ 不正确
- ✅ 正确
foo?.bar!;
foo?.bar()!;
Open in Playgroundfoo?.bar;
foo?.bar();
Open in Playground何时不使用它
如果你的项目类型尚未完全描述某些值是否可以为空(例如,如果你要转换到 strictNullChecks
),则此规则可能会创建许多错误报告。
你可以考虑在这些特定情况下使用 ESLint 禁用注释,而不是完全禁用此规则。
英:If your project's types don't yet fully describe whether certain values may be nullable, such as if you're transitioning to strictNullChecks
, this rule might create many false reports.
You might consider using ESLint disable comments for those specific situations instead of completely disabling this rule.
进一步阅读
选项
该规则不可配置。