Перейти к основному содержимому

FormSchema

type FormSchema<T> = { [K in keyof T]: NonNullable<T[K]> extends string | number | boolean ? NonEmptyFieldConfig<T[K]> : NonNullable<T[K]> extends (infer U)[] ? U extends string | number | boolean ? NonEmptyFieldConfig<T[K]> : U extends Date | File | Blob | AnyFunction ? NonEmptyFieldConfig<T[K]> : [FormSchema<U>] : NonNullable<T[K]> extends Date | File | Blob | AnyFunction ? NonEmptyFieldConfig<T[K]> : FormSchema<NonNullable<T[K]>> };

Defined in: core/types/deep-schema.ts:141

Data-shaped конфиг формы: ключи повторяют структуру данных T, значения — FieldConfig (или вложенный FormSchema). Форма конфига, из которой строится GroupNode.

  • T[] -> [FormSchema<T>] (массив с одним элементом)
  • object -> FormSchema<T> (группа)
  • primitive -> FieldConfig<T> (поле)

Использует NonNullable для корректной обработки опциональных полей.

⚠️ Не путать с FormSchemaNode — тот описывает узел дерева M1-схемы (лист/массив/ контейнер), передаваемой в createForm({ model, schema }). FormSchema — это data-shaped конфиг (ключи = поля данных), а не узел дерева.

Type Parameters

T

T

Example

interface Form {
name: string; // → FieldConfig<string>
address: { // → FormSchema<Address>
city: string;
street: string;
};
items?: Array<{ // → [FormSchema<Item>] (опциональный)
title: string;
price: number;
}>;
}

const schema: FormSchema<Form> = {
name: { value: '', component: Input },
address: {
city: { value: '', component: Input },
street: { value: '', component: Input },
},
items: [{
title: { value: '', component: Input },
price: { value: 0, component: Input },
}],
};