typescript Feb 19, 2026
assertNever for Exhaustive Switches
Fail fast when a union gains a new member.
assertNever turns missing switch branches into compile errors and runtime failures.
Helper
assert-never.ts
function assertNever(value: never): never {
throw new Error('Unhandled case: ' + value)
}
type Event =
| { type: 'created'; id: string }
| { type: 'deleted'; id: string }
function handle(event: Event) {
switch (event.type) {
case 'created':
return event.id
case 'deleted':
return event.id
default:
return assertNever(event)
}
}