TypeScript — Вопросы для собеседований
Продвинутые типы
Уровень программирования на типах — условные типы и infer, mapped-типы поверх keyof, template literal types, дистрибутивность условных типов и рекурсивные типы с их ограничением глубины инстанцирования.
16 вопросов
Асинхронность и промисы
Типизация асинхронного кода — сигнатуры колбэков против Promise<T>, как async/await выводит тип возврата, Awaited<T>, Promise.all над разнородными промисами и асинхронные генераторы.
7 вопросов
Сборка и тулчейн
Проверка типов через tsc против транспиляции esbuild или SWC, Go-нативный компилятор TypeScript 7, project references и инкрементальная сборка в монорепозитории, typescript-eslint и диагностика медленной проверки типов.
18 вопросов
Паттерны классов
Классы за пределами основ — implements против extends, почему два класса одинаковой формы совместимы, полиморфный тип this, миксины, переопределение методов при структурной типизации и fluent-билдеры, кодирующие порядок вызовов в типах.
10 вопросов
Классы
Члены класса и аксессоры, модификаторы доступа, свойства-параметры, наследование и абстрактные классы.
12 вопросов
Декораторы
Декларативные аннотации, которые оборачивают классы и их члены, добавляя или меняя поведение.
2 вопросов
Функции
Типизация функций, параметры и возвращаемые значения, необязательные/значения по умолчанию/rest-параметры и перегрузки функций.
6 вопросов
Основы
Что такое TypeScript и как он связан с JavaScript, объявление переменных, const против let и вывод типов.
8 вопросов
Дженерики
Параметры типа для переиспользуемого типобезопасного кода, ограничения дженериков через extends и стандартные служебные типы на их основе.
12 вопросов
Интерфейсы и типы
Интерфейсы как структурные контракты, интерфейс против псевдонима типа, структурная типизация и слияние объявлений.
13 вопросов
Интероп с JavaScript
Жизнь с нетипизированным JavaScript — типы через JSDoc и @ts-check в .js-файлах, библиотеки без @types, объявление глобалов, добавленных тегом script, типизация API на Proxy и прототипный код, написанный до классов.
8 вопросов
Миграция и внедрение
Внедрение TypeScript в существующий код — постепенный переход файл за файлом, @ts-expect-error против @ts-ignore, включение strictNullChecks на большом проекте, контроль соглашений в CI и ревью пул-реквеста, полного any.
6 вопросов
Модули и резолюция
ES-модули против эмита CommonJS, стратегии резолюции модулей (node16, bundler), import type и isolatedModules, namespace, дополнение модулей, динамический import и пакеты @types.
13 вопросов
Сужение типов и type guards
Как поток управления сужает union до одного варианта — проверки typeof и instanceof, оператор in, размеченные объединения, пользовательские type guards, assertion-функции и проверка полноты через never.
12 вопросов
Типобезопасные паттерны
Прикладные решения, переносящие проверки в компиляцию — реестры типов «ключ → payload», типизированные event emitter и WebSocket-протоколы, обёртка над fetch с выводом по эндпоинту, плагинные системы, обобщённые репозитории, типизированные цепочки middleware в Express и process.env.
12 вопросов
React и TypeScript
Типизация React-кода — пропсы компонентов и почему от React.FC отказались, useState с начальным null, кастомные хуки, возвращающие кортежи, размеченные объединения пропсов для вариантов компонента, редьюсеры и формы ошибок валидации.
10 вопросов
Валидация в рантайме
Где заканчивается система типов и начинаются рантайм-проверки — почему TypeScript не может доверять ответу API, схемные валидаторы вроде Zod и выводимые из них типы, кодогенерация из OpenAPI и GraphQL, контрактные тесты и защита сгенерированных типов от рассинхронизации.
8 вопросов
Тестирование и тесты типов
Тестирование типизированного кода — проверка типов в тестовых файлах, типобезопасные моки и фикстуры, альтернативы as any, проверка того, что вызов отвергается на этапе компиляции, через tsd или expect-type, и типизация кастомного матчера Jest.
6 вопросов
Инструменты и компилятор
Компиляция TypeScript в JavaScript через tsc, настройка tsconfig.json и опции компилятора строгого режима.
11 вопросов
Система типов
Чем на самом деле являются типы в TypeScript — стирание на этапе компиляции, assertion против satisfies, as const, брендированные типы вместо номинальной типизации, как any отравляет вывод типов и где система типов намеренно несостоятельна.
13 вопросов
Типы
Базовые и примитивные типы, кортежи, специальные типы any/unknown/never и перечисления.
15 вопросов