sindresorhus/eslint-plugin-unicorn

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

Open

#2,564 opened on 2025年2月19日

GitHub で見る
 (4 comments) (0 reactions) (0 assignees)JavaScript (5,022 stars) (468 forks)user submission
change requesthelp wanted

説明

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.

コントリビューターガイド