@voxpelli/typed-utils
Version:
My personal (type-enabled) utils / helpers
56 lines • 2.48 kB
TypeScript
/** @import { IsEmptyObject } from './types/misc-types.d.ts' */
/**
* Noop function that validates at compile-time that Superset type is assignable to Base.
*
* Does nothing at runtime. Useful for type tests and ensuring type relationships hold.
*
* @template Base
* @template {Base} Superset
* @param {Base} _base - Base type to validate against
* @param {Superset} _superset - Superset type that should be assignable to Base
* @see {@link noopTypeIsEmptyObject} - Related type validation helper
*/
export function noopTypeIsAssignableToBase<Base, Superset extends Base>(_base: Base, _superset: Superset): void;
/**
* Noop function that validates at compile-time that Base type is an empty object.
*
* Does nothing at runtime. Useful for type tests.
*
* @template Base
* @param {Base} _base - Base type to validate as empty
* @param {IsEmptyObject<Base>} _shouldHaveKeys - Type-level check
* @see {@link noopTypeIsAssignableToBase} - Related type validation helper
*/
export function noopTypeIsEmptyObject<Base>(_base: Base, _shouldHaveKeys: IsEmptyObject<Base>): void;
/**
* Asserts that a value is of type `never`, used for exhaustive switch checks.
*
* This function ensures all cases in a discriminated union are handled at compile-time.
* If called at runtime, it throws an error indicating an unhandled case was encountered.
* TypeScript will produce a compile error if any cases are missing in the switch/conditional.
*
* @param {never} _value - The value that should be `never` (all cases handled)
* @param {string} [message] - Error message if assertion fails (defaults to 'Expected value to not exist')
* @throws {Error} Always throws, as this should never be reached at runtime
* @returns {never}
* @see {@link https://www.typescriptlang.org/docs/handbook/2/narrowing.html#exhaustiveness-checking} - TypeScript exhaustiveness checking
* @example
* ```js
* // Assuming "color" is of type: 'red' | 'green' | 'blue'
* switch (color) {
* case 'red': return '#f00';
* case 'green': return '#0f0';
* case 'blue': return '#00f';
* default:
* // TypeScript error if a color case is missing
* assertTypeIsNever(color, `Unhandled color: ${color}`);
* }
* ```
*/
export function assertTypeIsNever(_value: never, message?: string): never;
/**
* @param {never} _value
*/
export function noopTypeIsNever(_value: never): void;
import type { IsEmptyObject } from './types/misc-types.d.ts';
//# sourceMappingURL=never.d.ts.map