sindresorhus/eslint-plugin-unicorn

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

Open

#2.564 aberto em 19 de fev. de 2025

Ver no GitHub
 (4 comments) (0 reactions) (0 assignees)JavaScript (5.022 stars) (468 forks)user submission
change requesthelp wanted

Description

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.

Guia do colaborador