switch-exhaustiveness-check
Exhaustiveness checking in switch with union type.
Union type may have a lot of parts. It's easy to forget to consider all cases in switch. This rule reminds which parts are missing. If domain of the problem requires to have only a partial switch, developer may explicitly add a default clause.
Rule Details
Examples of code for this rule:
- ❌ Incorrect
- ✅ Correct
- ✅ Correct
type Day =
| 'Monday'
| 'Tuesday'
| 'Wednesday'
| 'Thursday'
| 'Friday'
| 'Saturday'
| 'Sunday';
const day = 'Monday' as Day;
let result = 0;
switch (day) {
case 'Monday': {
result = 1;
break;
}
}
type Day =
| 'Monday'
| 'Tuesday'
| 'Wednesday'
| 'Thursday'
| 'Friday'
| 'Saturday'
| 'Sunday';
const day = 'Monday' as Day;
let result = 0;
switch (day) {
case 'Monday': {
result = 1;
break;
}
case 'Tuesday': {
result = 2;
break;
}
case 'Wednesday': {
result = 3;
break;
}
case 'Thursday': {
result = 4;
break;
}
case 'Friday': {
result = 5;
break;
}
case 'Saturday': {
result = 6;
break;
}
case 'Sunday': {
result = 7;
break;
}
}
type Day =
| 'Monday'
| 'Tuesday'
| 'Wednesday'
| 'Thursday'
| 'Friday'
| 'Saturday'
| 'Sunday';
const day = 'Monday' as Day;
let result = 0;
switch (day) {
case 'Monday': {
result = 1;
break;
}
default: {
result = 42;
}
}
When Not To Use It
If program doesn't have union types with many parts. Downside of this rule is the need for type information, so it's slower than regular rules.
Attributes
- ✅ Recommended
- 🔧 Fixable
- 💭 Requires type information