Ответ
Типизация в JavaScript бывает динамической (определяется во время выполнения) и статической (TypeScript). Опыт работы с TypeScript включает:
-
Интерфейсы и типы для объектов, пропсов, состояний:
interface User { id: number; name: string; isActive?: boolean; // опциональное поле } -
Дженерики для универсальных компонентов:
function identity<T>(arg: T): T { return arg; } -
Union/Intersection типы,
type guards, утилиты (Pick,Omit). -
Интеграция с React: типизация пропсов, хуков, событий.
Нюансы:
anyvsunknown, строгие проверки (strictNullChecks).- Миграция JS → TS: декларации типов для сторонних библиотек (
@types).
Пример с React:
type ButtonProps = {
onClick: (e: React.MouseEvent) => void;
children: React.ReactNode;
variant?: 'primary' | 'secondary';
};