Avoid if statements as the only statement in else blocks

このページは日本語には対応しておりません。随時翻訳に取り組んでいます。翻訳に関してご質問やご意見ございましたら、お気軽にご連絡ください。

Metadata

ID: typescript-code-style/no-lonely-if

Language: TypeScript

Severity: Notice

Category: Best Practices

Description

Prefer else if statement instead of an lonely if statement, it is considered cleaner code.

Non-Compliant Code Examples

if (a) {;} else { if (b) {;} }

if (a) {
  foo();
} else {
  if (b) {
    bar();
  }
}

if (a) {
  foo();
} else /* comment */ {
  if (b) {
    bar();
  }
}
    
    
if (a) {
  foo();
} else {
  /* otherwise, do the other thing */ if (b) {
    bar();
  }
}
    
if (a) {
  foo();
} else {
  if /* this comment is ok */ (b) {
    bar();
  }
}

if (a) {
  foo();
} else {
  if (b) {
    bar();
  } /* this comment will prevent this test case from being autofixed. */
}
if (foo) {} else { if (bar) baz(); }

// Not fixed; removing the braces would cause a SyntaxError.
if (foo) {} else { if (bar) baz() } qux();

// This is fixed because there is a semicolon after baz().
if (foo) {} else { if (bar) baz(); } qux();

// Not fixed; removing the braces would change the semantics due to ASI.
if (foo) {
} else {
  if (bar) baz()
}
[1, 2, 3].forEach(foo);
    
// Not fixed; removing the braces would change the semantics due to ASI.
if (foo) {
} else {
    if (bar) baz++
}
foo;

// This is fixed because there is a semicolon after baz++
if (foo) {
} else {
  if (bar) baz++;
}
foo;

// Not fixed; bar() would be interpreted as a template literal tag
if (a) {
  foo();
} else {
  if (b) bar()
}
`template literal`;

if (a) {
  foo();
} else {
  if (b) {
    bar();
  } else if (c) {
    baz();
  } else {
    qux();
  }
}

Compliant Code Examples

if (a) {;} else if (b) {;}
if (a) {;} else { if (b) {;} ; }
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