Skip to content

noExtraNonNullAssertion

诊断类别:lint/suspicious/noExtraNonNullAssertion

¥Diagnostic Category: lint/suspicious/noExtraNonNullAssertion

自从:v1.0.0

¥Since: v1.0.0

来源:

¥Sources:

防止在 TypeScript 文件中错误使用非空断言运算符 (!)。

¥Prevents the wrong usage of the non-null assertion operator (!) in TypeScript files.

TypeScript 中的 ! 非空断言运算符用于断言值的类型不包含 nullundefined。在单个值上多次使用运算符不会产生任何效果。

¥The ! non-null assertion operator in TypeScript is used to assert that a value’s type does not include null or undefined. Using the operator any more than once on a single value does nothing.

¥Examples

¥Invalid

const bar = foo!!.bar;
code-block.ts:1:13 lint/suspicious/noExtraNonNullAssertion  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Forbidden extra non-null assertion.

> 1 │ const bar = foo!!.bar;
^^^^
2 │

Safe fix: Remove extra non-null assertion.

1 │ const·bar·=·foo!!.bar;
-
function fn(bar?: { n: number }) {
return bar!?.n;
}
code-block.ts:2:10 lint/suspicious/noExtraNonNullAssertion  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Forbidden extra non-null assertion.

1 │ function fn(bar?: { n: number }) {
> 2 │ return bar!?.n;
^^^^
3 │ }
4 │

Safe fix: Remove extra non-null assertion.

2 │ ··return·bar!?.n;
-
function fn(bar?: { n: number }) {
return ((bar!))?.();
}
code-block.ts:2:12 lint/suspicious/noExtraNonNullAssertion  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Forbidden extra non-null assertion.

1 │ function fn(bar?: { n: number }) {
> 2 │ return ((bar!))?.();
^^^^
3 │ }
4 │

Safe fix: Remove extra non-null assertion.

2 │ ··return·((bar!))?.();
-

¥Valid

const bar = foo!.bar;
obj?.string!.trim();
function fn(key: string | null) {
const obj = {};
return obj?.[key!];
}

¥Related links