Skip to content

noExtraNonNullAssertion (since v1.0.0)

Diagnostic Category: lint/suspicious/noExtraNonNullAssertion

Sources:

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

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.

const bar = foo!!.bar;
suspicious/noExtraNonNullAssertion.js: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;
}
suspicious/noExtraNonNullAssertion.js: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!))?.();
}
suspicious/noExtraNonNullAssertion.js: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!))?.();
                -       
const bar = foo!.bar;
obj?.string!.trim();
function fn(key: string | null) {
const obj = {};
return obj?.[key!];
}