AstComponent
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?
optionalcanHaveChildren:boolean
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:69
Флаг, может ли компонент иметь дочерние элементы.
Берётся из componentDefinition.canHaveChildren, при отсутствии
определения компонента считается true.
children?
optionalchildren:AstComponent[]
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:35
Дочерние компоненты в AST-форме.
componentDefinition?
optionalcomponentDefinition: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?
optionallayout:LayoutProps
Defined in: dsl/src/schema.ts:208
Layout-свойства (расположение и размеры).
Inherited from
Omit.layout
name?
optionalname:string
Defined in: dsl/src/schema.ts:199
Опциональное удобочитаемое имя для отображения в builder-web.
Inherited from
Omit.name
normalizedProps?
optionalnormalizedProps: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?
optionalparentId: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?
optionalprops:Record<string,PropValue>
Defined in: dsl/src/schema.ts:202
Пропы компонента (могут быть статическими и выражениями).
Inherited from
Omit.props
style?
optionalstyle: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