Checks if a given type T is exactly the never type.
T
never
It uses the [T] extends [never] pattern to correctly identify never even when T is a generic type parameter, avoiding issues with conditional type distribution.
[T] extends [never]
The type to check.
true if T is never, false otherwise.
true
false
type T1 = IsNever<never>; // truetype T2 = IsNever<string>; // falsetype T3 = IsNever<any>; // falsetype T4 = IsNever<unknown>; // falsetype T5 = IsNever<string | never>; // false (evaluates to string)type T6 = IsNever<string & never>; // true (evaluates to never) Copy
type T1 = IsNever<never>; // truetype T2 = IsNever<string>; // falsetype T3 = IsNever<any>; // falsetype T4 = IsNever<unknown>; // falsetype T5 = IsNever<string | never>; // false (evaluates to string)type T6 = IsNever<string & never>; // true (evaluates to never)
Checks if a given type
Tis exactly thenevertype.It uses the
[T] extends [never]pattern to correctly identifynevereven whenTis a generic type parameter, avoiding issues with conditional type distribution.