О разделе
TypeScript — JavaScript с статической проверкой типов. Исходники — файлы .ts; компилятор tsc проверяет контракты и выдаёт обычный JavaScript. В runtime работает только JS (браузер, Node.js, Deno, Bun); аннотации типов в сборку не попадают.
Это отдельный учебный раздел: от типов и первой программы до TypeScript и React, Node.js и паттернов. Краткий обзор внутри курса JavaScript — статья 30; таблицы и синтаксис — справочник 301.
Сначала: Что такое код и как он работает — компиляция, интерпретация, исходный код. Для сравнения динамической типизации — типы в JavaScript. Если статическая типизация знакома по C# — полезно свериться с типами в C#.
TS не заменяет JavaScript в браузере. Аннотации типов исчезают при компиляции — в dist/ остаётся JS. Подробнее — архитектура компиляции и первая программа.
Изучайте JavaScript как базу (синтаксис, Promise, модули), затем переходите сюда за типами, tsconfig и практикой крупных проектов. Event loop и async в JS — асинхронность JS; типизация Promise — async в TypeScript.
Карта ключевых тем
| Тема | Статья |
|---|---|
| Что такое TypeScript, надмножество JS | intro, история, типы §введение |
| Проблемы JavaScript и зачем TS | история, типы §зачем |
| Статическая типизация, типобезопасность | Типы и типизация, рекомендации |
| Утиная vs структурная типизация | Типы и типизация, классы |
| Проектирование типов, LSP (Лисков) | типы §проектирование, Паттерны |
| Типы и значения, примитивы, enum, tuple | Типы и типизация, коллекции |
Обязательны ли аннотации let x: T | переменные |
| Проверка только на этапе TS | Компиляция |
| Type-driven development | рекомендации, функции |
| Компилятор, флаги, Go 7.x, TypeScript Server | Компиляция, TypeScript Server |
| React / Node.js | 21, 22 |
| Дженерики, Omit, keyof, literal union, связанный выбор | дженерики, Типы и типизация |
Exclude / Extract, сужение по группам (Compat) | типы §utility, 24 §Compat |
Mapped types, PayloadMap[E], webhooks | 24 §сопоставленные, 28 |
tsx, сборка TS для GitHub Pages | 4, 3 |
| Декораторы, примеси, паттерны | 23, 28 |
| Миграция, monorepo, DefinitelyTyped | 6, 3, 9 |
| Async, генераторы, TypeORM, практикум | 17, 25, 26, 5 |
Полная нумерованная карта блоков — в 1.md. Соответствие 18 разделам справочника 301 (основы типизации … расширение TS) — в индексе справочника.
С чего начать
| Шаг | Материал | Назначение |
|---|---|---|
| 1 | Основы и карта раздела | Полный маршрут по темам |
| 2 | Первая программа | npm, tsc, первый dist/ |
| 3 | Типы и типизация | Ядро языка — контракты данных |
| 4 | Рекомендации | strict, unknown, CI |
| 5 | Простые приложения | Мини-проекты |
| 6 | Async | Promise<T>, состояния UI |
| 7 | TypeScript и React или Node.js | Прикладной стек |
Что входит в раздел
Раздел проходит путь от синтаксиса и типов через функции, классы и коллекции к компиляции, tsserver и экосистеме. Прикладной блок — TypeScript и React, Node.js, TypeORM, Паттерны и Обработка ошибок. Навигация по таблицам — индекс и справочник 301; в конце — итоги и чек-лист.
Где применяют TypeScript
| Область | Примеры |
|---|---|
| Frontend | React, Vue, Angular, Next.js, SvelteKit |
| Backend | Node.js, NestJS, Express + TS |
| Mobile / desktop | React Native, Ionic, Electron |
| Инструменты | VS Code, часть CLI и сборщиков |
Частые ошибки при старте
| Ошибка | Что делать |
|---|---|
| Путать TS с отдельным runtime | TS компилируется в JS — см. 15 |
| Игнорировать ошибки компилятора | Исправлять; не отключать strict без причины — 6 |
Везде any | unknown + проверки; типы API в types/ — 10 |
| Учить TS без JS | Сначала база JavaScript |
| Дублировать справочник в голове | Учёба — статьи раздела; таблицы — 301 |
Основы TypeScript и структура языка
Карта учебного раздела TypeScript: маршруты по блокам, связь с JS/301 и точки входа для новичка и практика.
Типы данных и типизация в TypeScript
Система типов TypeScript: зачем TS, статическая типизация, type safety, structural vs duck typing, LSP, примитивы, narrowing, utility types.
Переменные и константы в TypeScript
let и const, вывод типов, явные аннотации, readonly, деструктуризация и strictNullChecks при работе с переменными.
Операторы и условные ветвления в TypeScript
Сравнения, логика, narrowing, discriminated union, switch с never, ?? и in — ветвления со статической проверкой.
Циклы в TypeScript
for, for...of, for...in, while и типизированный перебор коллекций — кратко, с опорой на JavaScript и методы массивов.
Функции в TypeScript
Типизация параметров и результата, типы функций, перегрузки, callback, this, rest/spread и generic-функции.
Архитектура компиляции TypeScript и runtime
Этапы компиляции tsc, emit в JavaScript, target и module, declaration, source maps, tsc vs bundler и роль GC в runtime.
TypeScript Server
tsserver, Language Service Protocol, IntelliSense, диагностика в IDE, workspace version и project references.
Асинхронное программирование в TypeScript
Promise<T>, async/await, типизация ответов API, discriminated union для состояний загрузки и безопасный catch с unknown.
Объекты и классы в TypeScript
interface и type для объектов, классы, модификаторы доступа, structural typing, abstract и implements — с отсылкой к номинальной модели C#.
Коллекции и массивы в TypeScript
Array<T>, кортежи, Record, Map, Set, readonly-массивы, as const и типизированные методы map/filter/reduce.
Справочник по TypeScript
Индекс раздела TypeScript: соответствие 18 блокам справочника 301 и учебным статьям 5-10.
События и обработка событий в TypeScript
Типизация DOM-событий, делегирование, CustomEvent с detail и связь с React synthetic events.
TypeScript и React
Типизация props и state, хуки, события форм, LoadState в компонентах и слой типов API в React + TypeScript.
TypeScript и Node.js
Backend на Node: tsconfig NodeNext, DTO и domain, Express-стиль handlers, fs/promises и typecheck в CI.
Декораторы в TypeScript
Декораторы классов и методов, experimentalDecorators, Stage 3, NestJS и когда обойтись без метапрограммирования.
Дженерики в TypeScript
Generic-функции и классы, constraints, keyof, связанные generic, infer, Path/PathType и type-safe API.
Генераторы и итераторы в TypeScript
Generator<T>, Iterable, AsyncGenerator, for await...of и типизация ленивых последовательностей.
TypeORM
Сущности, репозитории, миграции и связи в TypeORM с TypeScript — обзор для Node backend.
Обработка ошибок в TypeScript
throw vs Result, Option, unknown в catch, доменные ошибки, HTTP-маппинг и Zod на границе API.
Паттерны в TypeScript
Discriminated union, branded types, mixins, фабрики, DTO-мапперы, type-safe events и exhaustive switch в прикладном TS.
Экосистема и архитектура TypeScript
Компилятор, DefinitelyTyped, ESLint, монорепозиторий, project references, CI typecheck и типичные стеки frontend/backend.
Первая программа на TypeScript
Установка TypeScript, tsconfig, первая типизированная программа в Node.js, проверка ошибок до запуска и скрипты typecheck.
Простые приложения на TypeScript
Практикум: Todo CLI, форма в браузере и type-safe API-клиент с LoadState, guards и strict-типизацией.
Рекомендации по разработке на TypeScript
Strict-режим, unknown вместо any, структура типов, миграция с JS, Zod и code review в TypeScript-проектах.
История TypeScript
От Microsoft 2012 к open source: эволюция языка, strict, экосистема и место TypeScript в современной разработке.
Синтаксис и пунктуация TypeScript
Аннотации типов, interface vs type, import type, .ts и .tsx, пунктуация и связь со справочником 301.
Форматы и подключение TypeScript
tsconfig.json, ESM и CommonJS, пути импорта, @types, Vite и Node.js — как подключить TypeScript в проект.
TypeScript — итоги
Итоги раздела TypeScript: FAQ, главные выводы и куда идти после прохождения карты статей.
TypeScript — чек-лист
Чек-лист раздела TypeScript: вопросы для самопроверки по синтаксису, типам, async, React, Node и продвинутым темам.
TypeScript — о разделе
TypeScript как отдельный язык: основы, экосистема, типизация, архитектура компиляции, практика с React и Node.js.