Type Alias DeepPartialAstNode<T>

DeepPartialAstNode<T>: T extends Reference<infer U extends AstNode>
    ? Reference<DeepPartialAstNode<U>>
    : T extends AstNode
        ? {
            [K in keyof T as K extends `$${string}` | (T[K] extends boolean | (...)[]
                    ? K
                    : never)
                ? K
                : never]: DeepPartialAstNode<T[K]>
        } & {
            [K in keyof T as K extends `$${string}`
                ? never
                : T[K] extends boolean | any[]
                    ? never
                    : K]?: DeepPartialAstNode<T[K]>
        }
        : T extends (infer U)[]
            ? DeepPartialAstNode<U>[]
            : T

Recursively makes all properties of an AstNode optional, except for those that start with a dollar sign ($) or are of type boolean or are of type array. If the type is a Reference or an Array, it applies the transformation recursively to the inner type. Otherwise the type is returned as is.

Type Parameters

  • T

    The type to be transformed.