Как правильно задать типы для React компонентов

У меня есть такой компонент Form https://take.ms/tvcF3, который состоит из двух более маленьких компонентов, компонента Input & Button https://take.ms/STLTb.

Код компонента Form выглядит так:

import { Button } from '../button/button';
import { Input, InputProps } from '../input/input';

export interface FormProps extends InputProps {
    buttonTitle?: string;
}

export function Form({ buttonTitle = 'Submit', ...args }: FormProps) {
    return (
        <form className="flex">
            <div className="min-w-0 flex-auto mr-4">
                <Input {...args} />
            </div>
            <Button size="sm" type="submit">
                {buttonTitle}
            </Button>
        </form>
    );
}

export default Form;

Вопрос, как мне правильно задать для компонента Form типы? По сути у меня в FormProps также должны быть и типы компонента Input, чтобы я мог передавать разные методы и свойства которые относятся к Input, по типу onChange и т.д. Но мне также нужны и типы правильные для самой формы, чтобы была возможность правильно использовать ее свойства и методы по-типу onSubmit и т.д.

Нужно делать что-то подобное?

export interface FormProps
    extends React.DetailedHTMLProps<
            React.FormHTMLAttributes<HTMLFormElement>,
            HTMLFormElement
        >,
        InputProps {
    buttonTitle?: string;
}

Но тогда TypeScript ругается https://take.ms/08W5J. Для Input у мена заданы такие типы:

export type InputProps = React.DetailedHTMLProps<
    React.InputHTMLAttributes<HTMLInputElement>,
    HTMLInputElement
>

Подскажите, пожалуйста, как в таких ситуациях лучше поступать.


Ответы (0 шт):