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

Учебник TypeScript для начинающих

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

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

Курс «TypeScript» состоит из 6 разделов и 22 уроков: Введение в TypeScript, Базовые типы, Функции, Объекты, интерфейсы и type-алиасы, Классы и ООП и Продвинутые типы. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

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

  1. 1 Введение в TypeScript

    1. Зачем нужны типы: проблемы динамического JavaScript

      Почему динамическая типизация JavaScript порождает баги и как статические типы TypeScript ловят их ещё до запуска кода.

    2. Установка TypeScript и компилятор tsc

      Как установить TypeScript через npm, скомпилировать первый .ts-файл командой tsc и понять, как TypeScript превращается в обычный JavaScript.

    3. tsconfig.json: настройка проекта

      Что такое tsconfig.json, как создать его через tsc --init и какие опции (target, strict, outDir) важны для каждого TypeScript-проекта.

  2. 2 Базовые типы

    1. Базовые типы: string, number, boolean

      Примитивные типы TypeScript — string, number, boolean — и автоматический вывод типов: как аннотировать переменные и почему часто аннотация не нужна.

    2. Массивы и кортежи (tuple)

      Как типизировать массивы в TypeScript двумя способами и зачем нужны кортежи (tuple) — массивы фиксированной длины с типом для каждой позиции.

    3. any, unknown и never

      Три особых типа TypeScript: опасный any, безопасный unknown и недостижимый never — когда каждый из них уместен и почему any стоит избегать.

    4. Union-типы, литеральные типы и strictNullChecks

      Union-типы (string | number), литеральные типы для ограниченного набора значений и защита от null/undefined через strictNullChecks.

  3. 3 Функции

    1. Типизация параметров и возвращаемого значения

      Как аннотировать параметры функции и тип возвращаемого значения в TypeScript, зачем явно указывать возврат и что такое тип void.

    2. Опциональные параметры, значения по умолчанию и rest

      Опциональные параметры через ?, значения по умолчанию и rest-параметры в TypeScript: как делать гибкие функции с правильной типизацией.

    3. Типы функций и перегрузки

      Как описать тип функции (сигнатуру) и использовать его для колбэков, и что такое перегрузки функций в TypeScript для разных наборов аргументов.

  4. 4 Объекты, интерфейсы и type-алиасы

    1. Типизация объектов и интерфейсы

      Как описывать форму объекта в TypeScript встроенным типом и через interface — именованный контракт для структуры данных.

    2. Type-алиасы и их отличие от интерфейсов

      Что такое type alias в TypeScript, чем он отличается от interface и когда выбирать каждый из них для описания типов.

    3. Опциональные и readonly свойства

      Как помечать свойства объекта необязательными через ? и защищать их от изменения через readonly в TypeScript.

    4. Индексные сигнатуры и вложенные структуры

      Индексные сигнатуры для объектов-словарей с динамическими ключами и типизация вложенных объектов в TypeScript.

  5. 5 Классы и ООП

    1. Классы и модификаторы доступа

      Классы в TypeScript и модификаторы доступа public, private, protected и readonly: как инкапсулировать данные и защитить поля от внешнего доступа.

    2. Параметры-свойства в конструкторе

      Сокращённый синтаксис TypeScript для объявления и инициализации полей класса прямо в параметрах конструктора (parameter properties).

    3. Наследование и implements

      Наследование классов через extends и реализация интерфейсов через implements в TypeScript: повторное использование кода и контракты для классов.

    4. Абстрактные классы, геттеры и сеттеры

      Абстрактные классы как шаблоны для наследников и геттеры/сеттеры для контролируемого доступа к полям в TypeScript.

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

    1. Дженерики: функции и классы

      Дженерики (generics) в TypeScript: как писать функции и классы, работающие с любым типом без потери типобезопасности и без any.

    2. Перечисления (enum)

      Перечисления enum в TypeScript: как задать именованный набор связанных констант, числовые и строковые enum и когда их использовать.

    3. Утилитарные типы: Partial, Pick, Omit, Record

      Встроенные утилитарные типы TypeScript — Partial, Required, Pick, Omit, Record — для создания новых типов на основе существующих без дублирования.

    4. Сужение типов и type guards

      Сужение типов (narrowing) в TypeScript через typeof, in и instanceof, а также пользовательские type guards для безопасной работы с union-типами.