Какой опыт типизации

«Какой опыт типизации» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Типизация в 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: типизация пропсов, хуков, событий.

Нюансы:

  • any vs unknown, строгие проверки (strictNullChecks).
  • Миграция JS → TS: декларации типов для сторонних библиотек (@types).

Пример с React:

type ButtonProps = {
  onClick: (e: React.MouseEvent) => void;
  children: React.ReactNode;
  variant?: 'primary' | 'secondary';
};