Type Alias SelectFrom<Full, Selection, Depth>

SelectFrom: Depth extends TsTooMuchRecursion
    ? ["Error: recursive object depth is too deep."]
    : Full extends ReadonlyArray<infer Element extends any>
        ? (
            | SelectFrom<Extract<Element, AnyObject>, Selection, TsRecurse<Depth>>
            | Exclude<Element, AnyObject>
        )[]
        : MakeKeysOptional<
            Full,
            {
                -readonly [Key in keyof Selection as Selection[Key] extends false
                    ? never
                    : Key extends keyof Full ? Key : never]:
                    | (
                        Selection[Key] extends GenericSelectionSet
                            ? SelectFrom<
                                NonNullable<Extract<(...)[(...)], AnyObject>>,
                                Selection[Key],
                                TsRecurse<Depth>,
                            >
                            : Full[Key]
                    )
                    | Exclude<Full[Key], AnyObject>
            },
        >

Performs a SQL-like nested selection on an object, extracting the selected values. This produces the output type for selectFrom.

Type Parameters