PatchType<V>: V extends (infer E)[]
    ? Record<`${number}`, PatchType<E>> | PatchType<E>[]
    : V extends number
        ? number
        : V extends bigint
            ? bigint
            : V extends object
                ? V extends ((...args: any[]) => any)
                    ? never
                    : {
                        [K in keyof V]?: PatchType<V[K]>
                    }
                : V

Type Parameters

  • V