sindresorhus/eslint-plugin-unicorn

The `prefer-switch` rule can behave strangely in certain situations

Chiusa

#2564 aperta il 19 feb 2025

 (4 commenti) (0 reazioni) (0 assegnatari)JavaScript (468 fork)user submission
change requesthelp wanted

Metriche repository

Star
 (5022 stelle)
Metriche merge PR
 (Merge medio 4h 30m) (26 PR mergiate in 30 g)

Descrizione

The prefer-switch rule is applied in some situations where it doesn't really make sense.

Example code:

  // eslint-disable-next-line unicorn/prefer-switch
  if (typeof document.exitFullscreen === 'function') {
    await document.exitFullscreen();
  } else if (typeof document.webkitExitFullscreen === 'function') {
    await document.webkitExitFullscreen();
  } else if (typeof document.mozExitFullscreen === 'function') {
    await document.mozExitFullscreen();
  }

Example after "fixing":

  switch ('function') {
    case typeof document.exitFullscreen: {
      await document.exitFullscreen();

      break;
    }
    case typeof document.webkitExitFullscreen: {
      await document.webkitExitFullscreen();

      break;
    }
    case typeof document.mozExitFullscreen: {
      await document.mozExitFullscreen();

      break;
    }
  // No default
  }

While this may technically work, it doesn't seem like a situation where this rule should be applied. The result is unintuitive and it also causes TypeScript's type inferences to break in this situation.

Guida contributor