sindresorhus/eslint-plugin-unicorn
View on GitHubThe `prefer-switch` rule can behave strangely in certain situations
Open
#2,564 opened on Feb 19, 2025
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.