Avoid extra non-null assertions

Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel, n'hésitez pas à nous contacter.

Metadata

ID: typescript-best-practices/no-extra-non-null-assertion

Language: TypeScript

Severity: Error

Category: Error Prone

Description

The non null or undefined assertion operation should not be used twice in a single expression.

Non-Compliant Code Examples

const bar = foo!!.bar;
function foo(bar: number | undefined) { const bar: number = bar!!; }
function foo(bar?: { n: number }) { return bar!?.n; }
function foo(bar?: { n: number }) { return bar!?.(); }

// parentheses
const foo: { bar: number } | null = null; const bar = (foo!)!.bar;
function foo(bar?: { n: number }) { return (bar!)?.n; }
function foo(bar?: { n: number }) { return (bar)!?.n; }
function foo(bar?: { n: number }) { return (bar!)?.(); }

Compliant Code Examples

const bar = foo!.bar;

function foo(bar: number | undefined) {
  const bar: number = bar!;
}

function foo(bar?: { n: number }) {
  return bar?.n;
}

// https://github.com/typescript-eslint/typescript-eslint/issues/2166
checksCounter?.textContent!.trim();

// https://github.com/typescript-eslint/typescript-eslint/issues/2732
function foo(key: string | null) {
  const obj = {};
  return obj?.[key!];
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis