> Как типизировать компонент и пропсы в TypeScript? (React, TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Исходный Код
Стек: React, TypeScript
> Пример ответа
Для типизации компонента и пропсов в TypeScript используется интерфейс или тип, который описывает структуру пропсов. Затем этот тип передается в дженерик React.FC (или React.FunctionComponent) или указывается напрямую в параметрах функционального компонента.
Пример с интерфейсом и React.FC:
TSXinterface ButtonProps {label: string;onClick: () => void;disabled?: boolean;}const Button: React.FC<ButtonProps> = ({ label, onClick, disabled }) => {return (<button onClick={onClick} disabled={disabled}>{label}</button>);};
Более современный и рекомендуемый подход - без React.FC, с явным указанием типа пропсов:
TSXinterface ButtonProps {label: string;onClick: () => void;disabled?: boolean;}const Button = ({ label, onClick, disabled }: ButtonProps) => {return (<button onClick={onClick} disabled={disabled}>{label}</button>);};
Для детей (children) можно использовать встроенный тип React.ReactNode:
TSXinterface CardProps {title: string;children: React.ReactNode;}const Card = ({ title, children }: CardProps) => {return (<div><h2>{title}</h2>{children}</div>);};
Если пропсы опциональны, используйте ? в интерфейсе. Для строгой типизации событий применяйте React.MouseEvent, React.ChangeEvent и т.д.
> Похожие задачи по frontend
Что такое дженерики в TypeScript и для чего они используются
Что происходит при объединении полей с конкретными значениями в TypeScript?
Используешь ли условные типы (conditional types) в TypeScript
Использовал ли ты mapped types в TypeScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью