type never - nberlette/is GitHub Wiki
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
-
Deep
extendsboolean
(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 }