Skip to main content

AstComponent

@lowcode/dsl-compiler


Interface: AstComponent

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:33

AST-представление компонента.

По сути это тот же ComponentNode из DSL, но:

  • children нормализованы в AstComponent[];
  • добавлены служебные поля для навигации и анализа:
    • pageId — страница, к которой принадлежит компонент;
    • parentId — родительский компонент (если есть);
    • depth — глубина в дереве (root = 0);
    • path — строковый путь для отладки и валидации;
  • добавлены метаданные из DSL-реестра компонент:
    • componentDefinition — описание типа компонента;
    • canHaveChildren — может ли компонент иметь детей;
    • normalizedProps — пропсы с учётом значений по умолчанию и AST выражений.

Extends

  • Omit<ComponentNode, "children">

Properties

canHaveChildren?

optional canHaveChildren: boolean

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:69

Флаг, может ли компонент иметь дочерние элементы.

Берётся из componentDefinition.canHaveChildren, при отсутствии определения компонента считается true.


children?

optional children: AstComponent[]

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:35

Дочерние компоненты в AST-форме.


componentDefinition?

optional componentDefinition: ComponentDefinition

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:61

Описание типа компонента из DSL-реестра.

Если тип компонента неизвестен встроенному реестру, поле остаётся неопределённым.


depth

depth: number

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:44

Глубина в дереве компонентов (корень = 0).


id

id: string

Defined in: dsl/src/schema.ts:193

Уникальный ID компонента.

Inherited from

Omit.id


layout?

optional layout: LayoutProps

Defined in: dsl/src/schema.ts:208

Layout-свойства (расположение и размеры).

Inherited from

Omit.layout


name?

optional name: string

Defined in: dsl/src/schema.ts:199

Опциональное удобочитаемое имя для отображения в builder-web.

Inherited from

Omit.name


normalizedProps?

optional normalizedProps: Record<string, AstPropValue>

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:85

Нормализованные пропсы компонента.

Формируются на этапе построения AST:

  • учитывают значения по умолчанию из описания пропов;
  • включают все явно заданные пропсы из DSL;
  • могут содержать "лишние" пропсы, которых нет в описании;
  • для ExpressionValue вместо сырой строки используются AstExpressionValue с разобранным AST и метаданными.

Если по каким-то причинам нормализация не выполнялась, поле может оставаться undefined, тогда следует использовать оригинальные props.


pageId

pageId: string

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:38

ID страницы, к которой относится данный компонент.


parentId?

optional parentId: string

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:41

ID родительского компонента (undefined для корня).


path

path: string

Defined in: dsl-compiler/src/dslToAst/astTypes.ts:53

Строковый путь до компонента в DSL-дереве.

Примеры: "pages[0].rootComponent" "pages[0].rootComponent.children[1]"


props?

optional props: Record<string, PropValue>

Defined in: dsl/src/schema.ts:202

Пропы компонента (могут быть статическими и выражениями).

Inherited from

Omit.props


style?

optional style: StyleProps

Defined in: dsl/src/schema.ts:217

Стилевые свойства (цвета, шрифты, границы, классы и т.д.).

Этот блок описывает визуальное оформление компонента и может интерпретироваться runtime-слоем по-разному (CSS, Tailwind-классы, токены дизайн-системы и т.п.).

Inherited from

Omit.style


type

type: string

Defined in: dsl/src/schema.ts:196

Тип компонента (например: "Button", "Text", "Form").

Inherited from

Omit.type