type unknown or never - nberlette/is GitHub Wiki
export type IsUnknownOrNever<A, True = true, False = false> = IsNever<
A,
True,
IsUnknown<A, True, False>
>;
Resolves to True
if
A
is unknown
or is never
, and nothing else.
Otherwise, it resolves to False
. This is a
convenience type combining the
IsUnknown and
IsNever guards into a single type.
A
-
True
(default:true
) -
False
(default:false
)
Types
import type { IsUnknownOrNever } from "@nick/is/type";
type A = IsUnknownOrNever<unknown>; // true
type B = IsUnknownOrNever<never>; // true
type C = IsUnknownOrNever<any>; // false
type D = IsUnknownOrNever<string>; // false
export type OmitUnknownOrNever<U, Deep extends boolean = false> = U extends infer T extends object ? {
[K in [object Object]]:
Deep extends true ? OmitUnknownOrNever<T[K], true> : T[K]
} : IsUnknownOrNever<U, never, U>;
Omit properties from an object type where the value is unknown
or never
.
This relies on the
IsUnknownOrNever
utility type.
U
-
Deep
extendsboolean
(default:false
)
Types
import type { OmitUnknownOrNever } from "@nick/is/type";
type A = { a: string; b: unknown; c: number };
type B = OmitUnknownOrNever<A>;
// ^? type B = { a: string; c: number }