noNonNullAssertedOptionalChain
Summary
Section titled “Summary”- Rule available since:
v2.1.4 - Diagnostic Category:
lint/suspicious/noNonNullAssertedOptionalChain - This rule is recommended, which means is enabled by default.
- This rule doesn’t have a fix.
- The default severity of this rule is error.
- Sources:
How to configure
Section titled “How to configure”{ "linter": { "rules": { "suspicious": { "noNonNullAssertedOptionalChain": "error" } } }}Description
Section titled “Description”Disallow non-null assertions after optional chaining expressions.
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
Section titled “Examples”Invalid
Section titled “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.
obj?.prop;obj!.prop?.method();obj?.prop ?? defaultValue;Related links
Section titled “Related links”Copyright (c) 2023-present Biome Developers and Contributors.