← Все навыки

TypeScript

курс по TypeScript для фронтендеров уровня Junior+, готовящий к техническим собеседованиям. Студент научится проектировать типобезопасные контракты данных, писать переиспользуемые дженерики и utility types, сужать union-типы через type guards и корректно типизировать React-компоненты и хуки в строгом режиме.

5 модулей, 22 темы Junior+ Индивидуально с ментором

Программа

Вводный модуль

  • О курсе и как с ним работать

Модуль 1. Система типов

  • Лекция 1.1. TypeScript: язык или надстройка, type vs interface, стирание типов
  • Практика 1.1. TypeScript: язык или надстройка
  • Лекция 1.2. Сужение типов: narrowing, type guards, discriminated unions
  • Практика 1.2. Сужение типов
  • Лекция 1.3. any, unknown, never: три «особых» типа и когда какой
  • Практика 1.3. any, unknown, never
  • Лекция 1.4. Вывод типов из значений: keyof, typeof, as const, satisfies
  • Практика 1.4. Вывод типов из значений

Модуль 2. Дженерики и композиция типов

  • Лекция 2.1. Дженерики и utility types
  • Практика 2.1. Дженерики и utility types
  • Лекция 2.2. Типизация функций: сигнатуры, перегрузки, this-параметр
  • Практика 2.2. Типизация функций
  • Лекция 2.3. Свои utility types: mapped types, conditional types, infer
  • Практика 2.3. Свои utility types

Модуль 3. TypeScript в проекте

  • Лекция 3.1. enum и литеральное моделирование конечных состояний
  • Практика 3.1. enum и литеральное моделирование
  • Лекция 3.2. Типизация асинхронности и ошибок: Promise<T>, unknown в catch, result-паттерны
  • Практика 3.2. Типизация асинхронности и ошибок
  • Лекция 3.3. tsconfig и декларации: strict-флаги, .d.ts, типы сторонних библиотек
  • Практика 3.3. tsconfig и декларации

Модуль 4. Вопросы с собеседований

  • Вопросы с собеседований по темам курса

Что разбираем

  • Аннотации типов и вывод типов (inference), зачем нужна статическая типизация поверх JS
  • Примитивы string/number/boolean, массивы, tuples, enums, литеральные типы, object types
  • Специальные типы any/unknown/never/void и почему any обесценивает систему типов
  • Система типов — union и intersection, type aliases vs interface, структурная типизация
  • Сужение типов (narrowing) — typeof/instanceof/in, discriminated unions, пользовательские type guards, assertion functions, control flow analysis
  • Типизация функций — параметры и возврат, опциональные и default-параметры, перегрузки, this-типы, типы колбэков и функций высшего порядка
  • Дженерики — generic-функции, constraints через extends, дженерик-интерфейсы и классы, дефолтные типы-параметры
  • Продвинутые типы — mapped types, conditional types, infer, keyof/typeof, template literal types, utility types Partial/Pick/Omit/Record/Required
  • Tsconfig и strict mode, target vs module, noUncheckedIndexedAccess
  • Экосистема — declaration files .d.ts, @types/DefinitelyTyped, типизация React (props, хуки, события)

Практика

  • Затипизировать нетипизированный JS-модуль, положившись на inference там, где это возможно, и добавив аннотации только где нужно
  • Показать разницу между unknown и any на примере обработки ответа API: заставить компилятор требовать проверок перед использованием
  • Описать ответ API как discriminated union (по полю status) и безопасно обработать все варианты через switch без any
  • Написать пользовательский type guard (isUser) и assertion function, показать, как control flow analysis сужает тип в ветках
  • Реализовать дженерик-функцию с constraint через extends (например, pluck<T, K extends keyof T>) и объяснить вывод типов на вызове
  • Написать собственную реализацию Partial и Pick через mapped types и keyof, объяснить, как они работают под капотом
  • Собрать conditional type с infer (например, извлечь тип элемента массива или возвращаемый тип функции)
  • Сравнить type и interface на практике: расширение, слияние деклараций, описание union — и выбрать подходящее
  • Типизировать React-компонент: props с дженериком, children, обработчики событий, ref через forwardRef
  • Типизировать кастомный хук с несколькими перегрузками возвращаемого значения
  • Включить strict и noUncheckedIndexedAccess в tsconfig, починить всплывшие ошибки доступа по индексу
  • Подключить типы для нетипизированной библиотеки через .d.ts или пакет из DefinitelyTyped

Как проходит обучение

  • Занятия один на один с ментором под ваш темп и пробелы
  • Материалы курса открываются в личном кабинете, практику разбираете на встречах
  • Программа собирается под цель: подготовка к собеседованию или рабочая задача