UNPKG

hkt-toolbelt

Version:

Functional and composable type utilities

28 lines (27 loc) 771 B
import { Conditional, Kind } from '..'; /** * `_$isNever` is a type-level function that checks if a type is `never`. * * @template X - The type to check. * * @example * type T0 = _$isNever<'1'> // false * type T1 = _$isNever<never> // true * type T2 = _$isNever<unknown> // false * type T3 = _$isNever<any> // false */ export type _$isNever<X> = Conditional._$equals<X, never>; /** * `IsNever` is a type-level function that checks if a type is `never`. * * @template X - The type to check. * * @example * type T0 = $<IsNever, '1'> // false * type T1 = $<IsNever, never> // true * type T2 = $<IsNever, unknown> // false * type T3 = $<IsNever, any> // false */ export interface IsNever extends Kind.Kind { f(x: this[Kind._]): _$isNever<typeof x>; }