Проверяет понимание разницы между type и interface в TypeScript и умение выбирать подходящий способ типизации props в React-компонентах.
В TypeScript есть два способа описать форму объекта: interface и type. Для типизации props React-компонента оба подхода дают одинаковый результат с точки зрения проверки типов, но у них есть различия в возможностях и сценариях применения.
extends, что удобно для наследования пропсов.&.interface ButtonProps {
label: string;
onClick: () => void;
}
interface IconButtonProps extends ButtonProps {
icon: string;
}
function Button({ label, onClick }: ButtonProps) {
return <button onClick={onClick}>{label}</button>;
}
type ButtonProps = {
label: string;
onClick: () => void;
};
type IconButtonProps = ButtonProps & { icon: string };
type Variant = 'primary' | 'secondary';
Для props обычно достаточно простого объекта, поэтому оба варианта эквивалентны. Однако если нужен union (например, variant: 'primary' | 'secondary') или сложные вычисляемые типы, type предпочтительнее. Если планируется расширение через extends или declaration merging (например, для сторонних библиотек), лучше подходит interface.
interface для props.@typescript-eslint/consistent-type-definitions позволяет зафиксировать единый стиль.Итог: для типизации props в React выбирайте interface, если нужны расширение и единообразие, и type, если требуются union или сложные типы. Функционально они почти равнозначны, поэтому важнее консистентность в проекте.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию