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 },
}],
};