TypeScript: Exhaustiveness checking in switch with union type
The never
data type in TypeScript can be used to check that all cases in a switch are considered.
type Day =
| "Monday"
| "Tuesday"
| "Wednesday"
| "Thursday"
| "Friday"
| "Saturday"
| "Sunday";
function getDayIndex(day: Day) {
switch (day) {
case "Monday": {
return 1;
}
default: {
// `Type 'string' is not assignable to type 'never'.`
const _exhaustiveCheck: never = day;
return _exhaustiveCheck;
}
}
}
_exhaustiveCheck
will have an error because TypeScript is attempting to assign the rest of the Day
union to never
which cannot happen.
This can be found in the TypeScript documentation.