type unknown or never - nberlette/is GitHub Wiki

@nick/is/type/unknown-or-never

IsUnknownOrNever

Signature

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.

Type Parameters
  • A
  • True (default: true)
  • False (default: false)

Category

Types

Examples

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

OmitUnknownOrNever

Signature

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.

Type Parameters
  • U
  • Deep extends boolean (default: false)

Category

Types

Examples

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 }
⚠️ **GitHub.com Fallback** ⚠️