@douglasneuroinformatics/libjs
    Preparing search index...

    Type Alias HasNestedKey<T, P>

    HasNestedKey: T extends { [key: string]: unknown }
        ? IfNever<
            keyof {
                [K in keyof T as K extends P
                    ? K
                    : HasNestedKey<T[K], P> extends true ? K : never]: never
            },
            false,
            true,
        >
        : T extends (infer U)[] ? HasNestedKey<U, P> : false

    Return whether T or any record nested therein contains the key K

    Type Parameters

    • T
    • P extends string
    HasNestedKey<{ a: string; b: { c: { d: number }[] } }, 'a'>; // true
    HasNestedKey<{ a: string; b: { c: { d: number }[] } }, 'b'>; // true
    HasNestedKey<{ a: string; b: { c: { d: number }[] } }, 'c'>; // true
    HasNestedKey<{ a: string; b: { c: { d: number }[] } }, 'd'>; // true
    HasNestedKey<{ a: string; b: { c: { d: number }[] } }, 'e'>; // false
    HasNestedKey<{ a: string; b: { c: { d: number }[] } }, 'd' | 'e'>; // true
    HasNestedKey<{ a: string; b: { c: { d: number }[] } }, string>; // true