dkpage
@dkpage
Учусь

Как сделать вложенные в друг друга discriminatedUnion?

Валидация формы на ZOD и ReactHookForm
Суть в том что есть некая форма, которая меняет валидацию в зависимости от одного поля и для него у меня сделан discriminatedUnion в zod
Но в данный момент понадобилось по некоторым литералам в схемах сделать еще одну валидацию:

const twoUnion = z.discriminatedUnion("checked", [
  z.object({ checked: z.literal("true"), street: z.string() }),
  z.object({ checked: z.literal("false"), street: z.string().trim().min(1, { message: 'Обязательное поле' }) }),
]);


const oneUnion = z.discriminatedUnion("type", [
  z.object({ type: z.literal("001"), name: z.string(), checked: z.boolean() }),
  z.object({ type: z.literal("002"), name: z.string(), checked: z.boolean() }),
  z.object({ type: z.literal("003"), name: z.string(), checked: z.boolean() }),
  z.object({ type: z.literal("004"), name: z.string(), checked: z.boolean() }).and(twoUnion),
]);


Получается дерево наверно

Но выдает ошибку (is missing the following properties from type (type?: any) )

Как сделать вложенные в друг друга discriminatedUnion? И это вообще возможно, а то уже весь гид и документацию прочитал
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы