Разбираемые темы:
1. Основы TypeScript [1 ч теория, 1 ч практика]
История и основы языка TypeScript
Базовые типы в TypeScript
Возможности ES2015+, поддерживаемые в TS
Модули ES2015, импорт и экспорт
Приведение типов
Практика (настройка окружения, установка и настройка Webpack, подключение компилятора TypeScript, сборка bundle.js и его подключение к html-файлу)
2. Продолжаем изучать типы в TypeScript [1 ч теория, 1 ч практика]
Функциональные типы
Типы-литералы
Union типы
Работа с null и undefined, работа с strictNullChecks
Интерфейсы и структурные типы
Опциональные свойства в интерфейсах
Индексируемые типы
Классы и имплементация интерфейсов
Расширение интерфейсов
Приведение типов
Функциональные типы с помощью интерфейсов
Гибридные интерфейсы
Перегрузка функций (function overloading)
Практика (написание объектно-ориентированного приложения, использование типизации, классов, интерфейсов, инкапсуляции, полиморфизма)
3. Интеграция TypeScript с JavaScript-библиотеками (из npm и собственными). [1 ч теория, 1 ч практика]
Декларации (type declaration)
Практика: подключение JS-кода
Практика: подключение внешних JS-библиотек
Практика: подключение и типизация собственных JS-библиотек
4. Углубленное изучение классов [1 ч теория]
Приватные, защищенные и публичные поля
Статические поля классов
Статические свойства
Создание интерфейсов на основе классов
Модификатор readonly
Классы-выражения (class expressions)
Абстрактные классы
5. Углубленное изучение типов [2 ч теория]
Выведение типов
Контекстуальный тип (contextual type)
Совместимость типов
Объединение и дополнение интерфейсов (interface merge)
Типы пересечения (intersection types)
Локальное определение типов
Строгая проверка свойств объектов (strict literal assignment checking)
Строгие типы-литералы и их объединение
Дискриминаторы
Полиморфный тип this
Защитники типов (type guards)
Использование typeof для type guards
Сужение типов (narrowing) с помощью type guards
Сужение типов c помощью instanceof
Обнуляемые типы
6. Декораторы [1 ч теория, 1 ч практика]
Декларативное программирование с помощью декораторов
Изменение определений свойств с помощью декораторов
Расширение классов
Мета-программирование с помощью декораторов
Ограничение доступа к функциям с помощью декораторов
Использование оберток для изменения поведения функций
Декораторы с параметрами
Декораторы для методов
Практика: реализация проверки изменения значений поля
Практика: реализация и настройка логгирования с помощью декораторов
7. Generic-типы [1 ч теория]
Для чего нужны generic-типы
Работа с generic-массивами
Использование ограничений (constraints) с generic-типами
Generic-классы
Generic-интерфейсы
Реализация generic-классов с приведением типов к any
Реализация generic-классов с перегруженными методами
Итого: 8 ч теории (67%), 4 ч практики (33%)