-
-
Notifications
You must be signed in to change notification settings - Fork 0
type never
Nicholas Berlette edited this page Jun 19, 2025
·
1 revision
export type IsNever<T, True = true, False = false> = [T] extends [never] ? True
: False;Check if the type T is specifically never,
returning True if it is, and
False if not.
T-
True(default:true) -
False(default:false)
Types
import type { IsNever } from "@nick/is/type/never";
type A = IsNever<never>; // true
type B = IsNever<never, "never", "not never">; // "never"export type OmitNever<T, Deep extends boolean = false> = T extends object ? {
[K in [object Object]]: Deep extends true ? OmitNever<T[K], Deep> : T[K]
} : T;Omit properties from an object type where the value is never.
This relies on the IsNever utility
type.
T-
Deepextendsboolean(default:false)
Types
import type { OmitNever } from "@nick/is/type/never";
type A = Required<{ a: string; b: number } & { b: bigint; c: number }>;
// ^? type A = { a: string; b: never; c: number }
type B = OmitNever<A>;
// ^? type B = { a: string; c: number }