История TypeScript
Дальше: Экосистема · Первая программа · Обзор TypeScript в JS
Краткий обзор: происхождение TypeScript, связь с JavaScript и направление развития. Это не хроника каждого релиза — для версий смотрите официальные release notes.
Маршрут: О разделе → история → Экосистема → практика 4.md.
Проблема, которую решали
К середине 2010-х JavaScript стал языком крупных приложений (SPA, Node-сервисы). Слабая статическая проверка усложняла:
- рефакторинг в командах десятков разработчиков;
- согласование контрактов между модулями;
- онбординг в большие кодовые базы.
TypeScript предложил опциональную статическую типизацию поверх JS без смены runtime.
Хронология
| Год | Веха |
|---|---|
| 2012 | Публичный анонс Microsoft, Андерс Хейльсберг |
| 2014 | Open source на GitHub |
| 2016+ | Массовое adoption в Angular, затем React/Vue |
| 2020+ | strict по умолчанию в шаблонах, project references |
| 2023+ | Ускорение компилятора (Go-порт tsgo / parallel track) |
| Сейчас | Стандарт де-факто для крупного frontend и многого backend |
TypeScript развивается вместе с ECMAScript: новые возможности JS получают проверку типов. Направление задаёт команда TypeScript и сообщество.
Философия: надмножество JS
JavaScript ⊂ TypeScript (с типами)
│ │
└──── tsc ─────┘
▼
JavaScript (emit)
| Принцип | Смысл |
|---|---|
| Структурная типизация | форма важнее имени — 10.md |
| Постепенное внедрение | .js + allowJs + миграция — 6.md |
| Стираемые типы | в runtime только JS — 15.md |
| Инструменты | tsserver, IDE — 16.md |
TypeScript не конкурирует с JS как отдельный язык в браузере — он усиливает инженерный процесс.
Связь с ECMAScript и TC39
- Новые фичи JS (async/await, modules, decorators) сначала в стандарте, затем в TS.
- TypeScript иногда вводит конструкции раньше (например, часть utility types), затем упрощает при выравнивании со стандартом.
- Декораторы — долгий путь legacy → ES Stage 3 — 23.md.
Где TypeScript сегодня
| Область | Примеры |
|---|---|
| Frontend | React, Vue, Angular, Next.js, Svelte (с TS) |
| Backend | Node, NestJS, Express + TS, Deno (native TS) |
| Mobile | React Native |
| Desktop | Electron |
| Инструменты | VS Code, часть инфраструктуры сборки |
Один язык на клиенте и сервере упрощает общие типы DTO в monorepo — 3.md, 22.md.
Эволюция возможностей
- Generics, union/intersection — выразительная система типов.
strictи null-safety — меньшеundefinedв production.- Project references — масштаб monorepo.
satisfies, const type parameters — точный вывод без дублирования.- Ускорение компиляции — важно для очень больших репозиториев.
Детали синтаксиса — в статьях раздела и в 301.
Место TypeScript в инженерной практике
Понимание истории объясняет ожидания от языка:
- TS проверяет код на этапе разработки; в runtime остаётся обычный JS.
- Огромная экосистема
.d.ts— результат open source и DefinitelyTyped. - Споры
interfacevstype— культура, не религия — 8.md.
Практические задания
- Прочитайте Handbook — Intro на англ. или обзор в intro.
- Сравните один фрагмент в 4.md — с типом и без (мысленно уберите аннотации).
- Откройте Release Notes последней версии — 2–3 новые фичи.
- Посмотрите TypeScript GitHub — issues и roadmap.
- Сопоставьте стек вашего pet-проекта с таблицей выше.