sindresorhus/eslint-plugin-unicorn
The `prefer-switch` rule can behave strangely in certain situations
Chiusa
#2564 aperta il 19 feb 2025
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.