Вопросы на собеседовании: TypeScript
Реальные вопросы с TypeScript-собеседований: типы, дженерики и ловушки строгой типизации поверх JS.
Курс «Вопросы на собеседовании: TypeScript» состоит из 5 разделов и 13 уроков: Система типов, Дженерики, Продвинутая типизация, Совместимость с JavaScript и Практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Система типов
- type или interface: в чём разница
type или interface в TypeScript: чем отличается объявление через type alias от interface, как работает расширение через extends и пересечение через &, что выберет компилятор при дублировании имени.
- Union и intersection типы
Union (|) и intersection (&) типы в TypeScript на примерах: чем тип "или" отличается от типа "и", как компилятор сужает union через typeof и in, разбор частых ошибок собеседования.
- Литеральные типы и as const
Литеральные типы в TypeScript и оператор as const: чем type Method = "GET" отличается от string, зачем нужен as const для строгой типизации объектов и массивов, разбор на примерах.
- type или interface: в чём разница
2 Дженерики
- Обобщённые функции и типы
Дженерики в TypeScript вместо any: как параметр типа T сохраняет проверку типов там, где any её отключает, и как компилятор сам выводит T по аргументам функции.
- Ограничения дженериков (extends)
T extends в TypeScript: как ограничить допустимые типы параметра дженерика, почему без ограничения компилятор запрещает обращаться к полям T, структурная типизация на примерах.
- Utility types: Partial, Pick, Omit
Utility types в TypeScript — Partial, Pick и Omit на примерах: как производить новые типы из существующих без ручного дублирования полей и зачем это лучше копипасты типа.
- Обобщённые функции и типы
3 Продвинутая типизация
- Mapped types: типы из типов
Как устроены mapped types в TypeScript и как написать свой Partial с нуля — разбор вопроса с собеседования.
- Условные типы и infer
Как работают условные типы extends ? : и оператор infer в TypeScript — разбор популярного вопроса с собеседования.
- Mapped types: типы из типов
4 Совместимость с JavaScript
- any, unknown и never: в чём разница
Чем unknown отличается от any на собеседовании по TypeScript, зачем нужен тип never и какие ошибки с этими типами спрашивают чаще всего.
- Type guards: сужение типа в рантайме
Как typeof, instanceof и in сужают тип в TypeScript, чем отличаются друг от друга и как написать собственный type guard с помощью predicate-функции.
- strictNullChecks и другие strict-опции
Что включает strict: true в tsconfig.json, почему strictNullChecks ловит null и undefined ещё до запуска кода и какие ещё проверки входят в строгий режим.
- any, unknown и never: в чём разница
5 Практика
- Типизация Promise и async/await
Как указать тип результата асинхронной функции в TypeScript и почему catch всегда даёт unknown, а не тип ошибки.
- Частые ошибки типизации на практике
Разбор реальных ошибок типизации в TypeScript: неявный any и приведение типа через as «на всякий случай».
- Типизация Promise и async/await