Skip to content

noNonNullAssertedOptionalChain

¥Summary

¥How to configure

biome.json
{
"linter": {
"rules": {
"suspicious": {
"noNonNullAssertedOptionalChain": "error"
}
}
}
}

¥Description

禁止在可选链式表达式后使用非空断言。

¥Disallow non-null assertions after optional chaining expressions.

可选链式调用 (?.) 旨在当对象为 nullundefined 时返回 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