Тренажер по TypeScript

Тренажер TypeScript — практические задачи с визуализацией типов

Тренажер TypeScript представляет собой бесплатную онлайн-платформу для изучения языка программирования через решение практических задач без регистрации. Платформа ориентирована на тех, кто уже знаком с основами JavaScript и хочет освоить систему типов TypeScript на практике. Все задания выполняются прямо в браузере без установки дополнительного программного обеспечения.

В основе тренажера лежит принцип обучения через действие. Теоретические блоки отсутствуют — пользователь сразу переходит к написанию и анализу кода. Такой подход позволяет быстрее усвоить синтаксис аннотаций типов, понять работу системы вывода типов и научиться применять продвинутые конструкции вроде Generics и Utility Types.

Структура обучения: от примитивных типов до Conditional Types

Программа тренажера охватывает 28 тематических модулей и содержит более 100 практических заданий. Материал выстроен по принципу постепенного усложнения: от базовых аннотаций типов к продвинутым паттернам типизации.

Примитивные и специальные типы

Первые модули посвящены работе с базовыми типами данных TypeScript. Пользователь учится объявлять переменные с явным указанием типа, понимать разницу между any и unknown, правильно использовать void и never. Примеры заданий:

  • Указать правильную аннотацию типа для переменной, хранящей возраст пользователя
  • Найти ошибку в коде, где переменной типа unknown присваивается значение без проверки
  • Определить, какой тип выведет компилятор для функции без явного return

Массивы, кортежи и объекты

Модули по составным типам данных охватывают типизацию массивов в двух синтаксисах (Type[] и Array), работу с кортежами фиксированной длины и описание структуры объектов. Задания включают:

  • Собрать из частей тип для массива товаров интернет-магазина
  • Исправить ошибку в кортеже, описывающем координаты точки на карте
  • Добавить опциональное свойство в интерфейс профиля пользователя

Функции и их типизация

Раздел по функциям включает типизацию параметров и возвращаемых значений, работу с опциональными параметрами, rest-параметрами и callback-функциями. Практические задачи:

  • Написать сигнатуру функции расчёта стоимости доставки с опциональной скидкой
  • Сопоставить функции с их типовыми сигнатурами
  • Предсказать ошибку компиляции при передаче неправильного типа аргумента

Union типы и сужение типов

Модуль по Union типам объясняет создание типов-объединений и техники сужения типов через Type Guards. Пользователь осваивает проверки через typeof, instanceof, оператор in и пользовательские предикаты типов. Примеры:

  • Заполнить пропуски в функции, принимающей string | number
  • Расставить строки кода для корректного сужения Union типа
  • Написать пользовательский Type Guard для проверки объекта на соответствие интерфейсу

Интерфейсы и Type Aliases

Два связанных модуля раскрывают способы создания пользовательских типов. Рассматривается расширение интерфейсов через extends, пересечение типов, Declaration Merging. Задания:

  • Выбрать между interface и type для описания API-ответа
  • Объединить два интерфейса в один с помощью наследования
  • Найти ошибку в пересечении несовместимых типов

Классы в TypeScript

Модуль по классам охватывает модификаторы доступа (public, private, protected), сокращённую инициализацию в конструкторе, реализацию интерфейсов и абстрактные классы. Практика:

  • Расставить модификаторы доступа для свойств класса банковского счёта
  • Реализовать интерфейс платёжной системы в классе
  • Исправить ошибку доступа к protected-свойству из внешнего кода

Generics

Два модуля по обобщённым типам ведут от базового синтаксиса к продвинутым ограничениям. Пользователь учится создавать Generic-функции, интерфейсы и классы, применять constraints через extends. Задачи:

  • Написать Generic-функцию для получения первого элемента массива
  • Добавить ограничение типа для функции, работающей только с объектами
  • Предсказать результат вызова Generic-функции с разными типами аргументов

Utility Types

Три модуля посвящены встроенным утилитарным типам TypeScript. Рассматриваются Partial, Required, Readonly, Pick, Omit, Record, Exclude, Extract, ReturnType, Parameters. Примеры заданий:

  • Применить Partial для создания типа частичного обновления профиля
  • Сопоставить Utility Types с их описаниями
  • Выбрать правильный тип для словаря с ключами-строками и значениями-числами

Продвинутые типы

Завершающие модули охватывают операторы keyof и typeof, Mapped Types, Conditional Types и паттерн Discriminated Unions. Задания этого уровня:

  • Создать тип ключей объекта конфигурации с помощью keyof typeof
  • Написать Mapped Type, делающий все свойства опциональными
  • Реализовать exhaustiveness checking для обработки всех вариантов Union типа

Практические паттерны

Финальный модуль посвящён типизации реального кода: события DOM, fetch-запросы, работа с JSON и localStorage. Пользователь применяет полученные знания к задачам из повседневной разработки:

  • Типизировать обработчик события клика по кнопке
  • Описать тип ответа API для списка товаров
  • Создать типобезопасную обёртку над localStorage

Визуализация работы системы типов

Часть уроков снабжена интерактивным скриптом визуализации. Пользователь наблюдает пошаговое выполнение кода на примерах из практики: оформление заказа в интернет-магазине, фильтрация списка пользователей, расчёт скидок. На каждом шаге отображаются текущие типы переменных и результаты проверок.

В режиме викторины выполнение останавливается, и пользователю предлагается предсказать тип переменной или результат сужения Union типа. Такой формат помогает глубже понять логику работы компилятора TypeScript и вывода типов.

Форматы практических заданий

Тренажер использует девять форматов упражнений для разностороннего закрепления материала:

  • Заполнение пропусков — вставить недостающие аннотации типов или ключевые слова
  • Поиск ошибок — найти и исправить ошибку типизации в готовом коде
  • Сборка из частей — составить рабочий интерфейс или тип из предложенных фрагментов
  • Предсказание результата — указать, какой тип выведет компилятор или какая ошибка возникнет
  • Сопоставление — связать типы с их описаниями или примерами использования
  • Упорядочивание — расставить строки кода для корректного сужения типов
  • Сортировка по группам — распределить конструкции по категориям
  • Выбор из банка — заполнить пропуски вариантами из предложенного списка
  • Написание результата — самостоятельно указать выводимый тип или значение

Технические особенности платформы

Код выполняется непосредственно в браузере.

Каждое задание сопровождается мгновенной проверкой с обратной связью. При неправильном ответе пользователь получает пояснение, помогающее разобраться в ошибке. Прогресс сохраняется в браузере.

Целевая аудитория

Тренажер рассчитан на разработчиков с базовым знанием JavaScript, желающих освоить TypeScript. Платформа подходит для:

  • Студентов технических специальностей, изучающих веб-разработку
  • JavaScript-разработчиков, переходящих на TypeScript
  • Фронтенд-специалистов, работающих с React, Angular или Vue
  • Бэкенд-разработчиков, использующих Node.js
  • Самостоятельно обучающихся программированию

Часто задаваемые вопросы

Нужно ли знать JavaScript перед изучением TypeScript?

Да, TypeScript является надмножеством JavaScript и добавляет к нему систему типов. Тренажер предполагает знание базовых конструкций JavaScript: переменные, функции, массивы, объекты, классы. Задания сосредоточены на типизации и особенностях TypeScript, а не на синтаксисе JavaScript.

Сколько времени занимает прохождение всех заданий?

Полное прохождение 100+ заданий занимает от 15 до 30 часов в зависимости от начального уровня подготовки. Рекомендуется проходить 3-5 заданий за сессию с перерывами для усвоения материала. Модули по Generics и продвинутым типам требуют больше времени на осмысление.

Можно ли пропускать модули и проходить задания в произвольном порядке?

Технически платформа позволяет открывать любые задания. Однако материал выстроен последовательно: продвинутые модули опираются на понятия из предыдущих. Пропуск базовых тем по Union типам или Generics затруднит понимание Utility Types и Conditional Types.

Чем тренажер отличается от документации TypeScript?

Официальная документация объясняет концепции и приводит примеры. Тренажер предлагает активную практику: пользователь не читает о типах, а работает с ними напрямую. Форматы заданий — поиск ошибок, сборка кода, предсказание результатов — задействуют разные аспекты понимания материала.

Подходит ли тренажер для подготовки к собеседованию?

Тренажер охватывает темы, часто встречающиеся на технических интервью: Union типы, Type Guards, Generics, Utility Types, Discriminated Unions. Задания на предсказание результата и поиск ошибок близки к формату вопросов на собеседованиях. Для полноценной подготовки рекомендуется дополнительно решать алгоритмические задачи.

Работает ли тренажер на мобильных устройствах?

Платформа адаптирована для мобильных браузеров. Задания на выбор вариантов, сопоставление и сортировку удобно выполнять на смартфоне. Для заданий с написанием кода комфортнее использовать планшет или компьютер с физической клавиатурой.