Exhaustive switches & never checks
Write exhaustive unions with switch and catch missing cases using never; build a safe assertNever helper.
Intro
Goal: Make exhaustive switches over unions and use never to catch missing cases at compile-time.
Exhaustive switch
Discriminated unions use a common kind field. A switch on that field narrows each case safely.
type Circle = { kind: "circle"; radius: number }
type Square = { kind: "square"; size: number }
type Shape = Circle | Square
function area(s: Shape): number {
switch (s.kind) {
case "circle":
return Math.PI * s.radius * s.radius
case "square":
return s.size * s.size
}
}All lessons in this course
- Exhaustive switches & never checks
- Predicate functions & satisfies operator
- Refining unions across function boundaries