0Pricing
TypeScript Academy · Lesson

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

  1. Exhaustive switches & never checks
  2. Predicate functions & satisfies operator
  3. Refining unions across function boundaries
← Back to TypeScript Academy