Back to TIL
May 2025
posted on 05.31.2025

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.

No reactions yet

in Naperville, IL
Last visitor from Mitaka, Japan