Задать вопрос
@wonderingpeanut

Как создать тип из существующего типа, в котором будут только некоторые поля существующего типа?

Приветствую.
Есть следующий код:
type FormProps<T extends FieldValues> = {
  defaultValues?: DefaultValues<T>;
  onSubmit: (data: UnpackNestedValue<T>) => void;
  children: ({ register, formState }: UseFormReturn<T>) => ReactNode;
};
export const Form = <T,>({ defaultValues, onSubmit, children }: FormProps<T>) => {
  const { handleSubmit, reset, setValue, control, register } = useForm({ defaultValues });

  return <form onSubmit={handleSubmit(onSubmit)}>{children({ register, formState })}</form>;
};

В настоящий момент, если передать в children только register и formState, тайпскрипт ругается, что я указал не все требуемые свойства (требуется объект, который возвращается хуком useForm).

Как написать тип свойства children, чтобы ему требовались только некоторые свойства объекта UseFormReturn?
Именно требовались. Partial> не подходит.

Очевидно, что можно явно указать тип каждому требуемому свойство:

...
children: ({ register, formState }: { register: UseFormRegister<T>, formState: FormState<T> }) => ReactNode;
...


Но можно ли как-то получить тип из существующего типа UseFormReturn?
Плейграунд
  • Вопрос задан
  • 143 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
type X<T> = Pick<UseFormReturn<T>, 'register' | 'formState'>;

Как-то так
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽