Langium - v4.0.0
    Preparing search index...

    Type Alias DeepPartialAstNode<T>

    DeepPartialAstNode: 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.