@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?
Плейграунд
  • Вопрос задан
  • 138 просмотров
Решения вопроса 2
Alexandroppolus
@Alexandroppolus
кодир
type X<T> = Pick<UseFormReturn<T>, 'register' | 'formState'>;

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

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

Похожие вопросы