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

FormNodeControls

type FormNodeControls<T> = { [K in keyof T]: NonNullable<T[K]> extends (infer U)[] ? U extends FormFields ? ArrayNodeWithControls<U> : FieldNode<T[K]> : NonNullable<T[K]> extends FormFields ? NonNullable<T[K]> extends Date | File | Blob ? FieldNode<T[K]> : GroupNodeWithControls<NonNullable<T[K]>> : FieldNode<T[K]> };

Defined in: core/types/group-node-proxy.ts:58

Мапит тип модели данных T на правильные типы узлов формы

Рекурсивно определяет типы узлов на основе структуры данных:

  • T[K] extends Array<infer U> где U - объект → ArrayNodeWithControls<U>
  • T[K] extends Array<infer U> где U - примитив → FieldNode<T[K]> (массив как обычное поле)
  • T[K] extends objectGroupNodeWithControls<T[K]> (вложенная форма с типизацией)
  • T[K] примитив → FieldNode<T[K]> (простое поле)

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

Type Parameters

T

T

Тип модели данных формы