Narrow<T>:
    | _Narrow<T, 0 | number & {}>
    | _Narrow<T, 0n | bigint & {}>
    | _Narrow<T, "" | string & {}>
    | _Narrow<T, boolean>
    | _Narrow<T, symbol>
    | _Narrow<T, []>
    | _Narrow<T, {
        [_: PropertyKey]: Narrow;
    }>
    | (T extends object
        ? {
            [K in keyof T]: Narrow<T[K]>
        }
        : never)
    | Extract<{} | null | undefined, T>

Type Parameters

  • T = unknown