Files
routie/frontend/node_modules/eslint-plugin-perfectionist/dist/utils/unreachable-case-error.d.ts
T

44 lines
1.3 KiB
TypeScript

/**
* Error class for exhaustive type checking in switch statements and
* conditionals.
*
* Ensures at compile-time that all possible cases of a union type are handled.
* When TypeScript's type system proves all cases are covered, the variable in
* the default case has type `never`, making this error theoretically
* unreachable in correctly typed code.
*
* This pattern is crucial for maintaining type safety when adding new options
* to existing types - TypeScript will error if a new case isn't handled.
*
* @example
*
* ```ts
* // Exhaustive handling of sorting types
* function getSortingAlgorithm(
* type: 'alphabetical' | 'natural' | 'custom',
* ) {
* switch (type) {
* case 'alphabetical':
* return alphabeticalSort
* case 'natural':
* return naturalSort
* case 'custom':
* return customSort
* default:
* throw new UnreachableCaseError(type)
* // TypeScript ensures 'type' is 'never' here
* }
* }
* ```
*/
export declare class UnreachableCaseError extends Error {
/**
* Creates an error indicating that an supposedly unreachable case was
* reached.
*
* @param value - The value that should have type `never` if all cases are
* handled. In practice, this will contain the unhandled case value.
*/
constructor(value: never)
}