- 
          
 - 
                Notifications
    
You must be signed in to change notification settings  - Fork 0
 
type unknown or never
        Nicholas Berlette edited this page Jun 19, 2025 
        ·
        1 revision
      
    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>; // falseexport 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- 
Deepextendsboolean(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 }