Языки программирования

Вопросы на собеседовании: TypeScript

13 уроков · 5 разделов · бесплатно, без регистрации

Реальные вопросы с TypeScript-собеседований: типы, дженерики и ловушки строгой типизации поверх JS.

Курс «Вопросы на собеседовании: TypeScript» состоит из 5 разделов и 13 уроков: Система типов, Дженерики, Продвинутая типизация, Совместимость с JavaScript и Практика. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Система типов

    1. type или interface: в чём разница

      type или interface в TypeScript: чем отличается объявление через type alias от interface, как работает расширение через extends и пересечение через &, что выберет компилятор при дублировании имени.

    2. Union и intersection типы

      Union (|) и intersection (&) типы в TypeScript на примерах: чем тип "или" отличается от типа "и", как компилятор сужает union через typeof и in, разбор частых ошибок собеседования.

    3. Литеральные типы и as const

      Литеральные типы в TypeScript и оператор as const: чем type Method = "GET" отличается от string, зачем нужен as const для строгой типизации объектов и массивов, разбор на примерах.

  2. 2 Дженерики

    1. Обобщённые функции и типы

      Дженерики в TypeScript вместо any: как параметр типа T сохраняет проверку типов там, где any её отключает, и как компилятор сам выводит T по аргументам функции.

    2. Ограничения дженериков (extends)

      T extends в TypeScript: как ограничить допустимые типы параметра дженерика, почему без ограничения компилятор запрещает обращаться к полям T, структурная типизация на примерах.

    3. Utility types: Partial, Pick, Omit

      Utility types в TypeScript — Partial, Pick и Omit на примерах: как производить новые типы из существующих без ручного дублирования полей и зачем это лучше копипасты типа.

  3. 3 Продвинутая типизация

    1. Mapped types: типы из типов

      Как устроены mapped types в TypeScript и как написать свой Partial с нуля — разбор вопроса с собеседования.

    2. Условные типы и infer

      Как работают условные типы extends ? : и оператор infer в TypeScript — разбор популярного вопроса с собеседования.

  4. 4 Совместимость с JavaScript

    1. any, unknown и never: в чём разница

      Чем unknown отличается от any на собеседовании по TypeScript, зачем нужен тип never и какие ошибки с этими типами спрашивают чаще всего.

    2. Type guards: сужение типа в рантайме

      Как typeof, instanceof и in сужают тип в TypeScript, чем отличаются друг от друга и как написать собственный type guard с помощью predicate-функции.

    3. strictNullChecks и другие strict-опции

      Что включает strict: true в tsconfig.json, почему strictNullChecks ловит null и undefined ещё до запуска кода и какие ещё проверки входят в строгий режим.

  5. 5 Практика

    1. Типизация Promise и async/await

      Как указать тип результата асинхронной функции в TypeScript и почему catch всегда даёт unknown, а не тип ошибки.

    2. Частые ошибки типизации на практике

      Разбор реальных ошибок типизации в TypeScript: неявный any и приведение типа через as «на всякий случай».