noNonNullAssertedOptionalChain
¥Summary
-
规则生效日期:
v2.1.4¥Rule available since:
v2.1.4 -
诊断类别:
lint/suspicious/noNonNullAssertedOptionalChain¥Diagnostic Category:
lint/suspicious/noNonNullAssertedOptionalChain -
此规则为推荐规则,默认启用。
¥This rule is recommended, which means is enabled by default.
-
此规则没有修复方案。
¥This rule doesn’t have a fix.
-
此规则的默认严重级别为 error。
¥The default severity of this rule is error.
-
来源:
¥Sources:
¥How to configure
{ "linter": { "rules": { "suspicious": { "noNonNullAssertedOptionalChain": "error" } } }}¥Description
禁止在可选链式表达式后使用非空断言。
¥Disallow non-null assertions after optional chaining expressions.
可选链式调用 (?.) 旨在当对象为 null 或 undefined 时返回 undefined。在可选链式调用后立即使用非空断言 (!) 会违背可选链式调用的初衷,并可能导致运行时错误。
¥Optional chaining (?.) is designed to return undefined if the object is null or undefined.
Using a non-null assertion (!) immediately after optional chaining defeats the purpose
of optional chaining and can lead to runtime errors.
¥Examples
¥Invalid
obj?.prop!;code-block.ts:1:1 lint/suspicious/noNonNullAssertedOptionalChain ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Forbidden non-null assertion after optional chaining.
> 1 │ obj?.prop!;
│ ^^^^^^^^^^
2 │
ℹ Optional chaining already handles nullish values. Using non-null assertion defeats its purpose and may cause runtime errors.
ℹ Consider using the nullish coalescing operator `??` or optional chaining throughout the chain instead.
obj?.method()!.prop;code-block.ts:1:1 lint/suspicious/noNonNullAssertedOptionalChain ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Forbidden non-null assertion after optional chaining.
> 1 │ obj?.method()!.prop;
│ ^^^^^^^^^^^^^^
2 │
ℹ Optional chaining already handles nullish values. Using non-null assertion defeats its purpose and may cause runtime errors.
ℹ Consider using the nullish coalescing operator `??` or optional chaining throughout the chain instead.
obj?.[key]!.method();code-block.ts:1:1 lint/suspicious/noNonNullAssertedOptionalChain ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Forbidden non-null assertion after optional chaining.
> 1 │ obj?.[key]!.method();
│ ^^^^^^^^^^^
2 │
ℹ Optional chaining already handles nullish values. Using non-null assertion defeats its purpose and may cause runtime errors.
ℹ Consider using the nullish coalescing operator `??` or optional chaining throughout the chain instead.
¥Valid
obj?.prop;obj!.prop?.method();obj?.prop ?? defaultValue;¥Related links
Biome v2.1 中文网 - 粤ICP备13048890号