Skip to main content

no-non-null-asserted-optional-chain

Disallow non-null assertions after an optional chain expression.

ESLint 配置 中扩展"plugin:@typescript-eslint/recommended" 可启用此规则。

💡

此规则报告的一些问题可以通过编辑器 建议 手动修复。


如果对象是 nullundefined,则 ?. 可选链表达式提供 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.

大多数时候,要么对象不可为空并且不需要 ?. 来查找其属性,要么 ! 不正确并引入类型安全漏洞。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/no-non-null-asserted-optional-chain": "error"
}
};
在线运行试试这个规则 ↗

示例

foo?.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.

进一步阅读

选项

该规则不可配置。

资源