Files
Codeman/src/utils/type-safety.ts
T
arkonandClaude Opus 4.5 8f0bbf33d6 chore: bump version to 0.1477
Location: Ko Samui

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 07:24:32 +01:00

36 lines
1.1 KiB
TypeScript

/**
* @fileoverview Type safety utilities for exhaustive checking.
*
* @module utils/type-safety
*/
/**
* Assert that a value should never occur at runtime.
* Used in switch/case default blocks to ensure exhaustive handling.
*
* If TypeScript sees a code path where `value` is not `never`,
* it will report a compile-time error, catching missing cases.
*
* @param value - The value that should be of type `never`
* @param message - Optional custom error message
* @throws Error if called at runtime (indicates unhandled case)
*
* @example
* type Status = 'active' | 'inactive' | 'pending';
* function handleStatus(status: Status): void {
* switch (status) {
* case 'active': // handle active
* break;
* case 'inactive': // handle inactive
* break;
* case 'pending': // handle pending
* break;
* default:
* assertNever(status); // Compile error if case is missing
* }
* }
*/
export function assertNever(value: never, message?: string): never {
throw new Error(message ?? `Unexpected value: ${JSON.stringify(value)}`);
}