TypeScript — строго типизированный надмножество JavaScript¶
TypeScript — это строго типизированный надмножество языка программирования JavaScript, разработанное компанией Microsoft. Компилятор TypeScript транслирует исходный код в стандартный JavaScript, сохраняя при этом статическую типизацию, проверку типов на этапе компиляции и поддержку современных возможностей ECMAScript. Язык применяется для разработки клиентских и серверных приложений, а также крупных программных систем, где важны надёжность и сопровождаемость кода.
¶История
TypeScript был создан под руководством Андерса Хейлсберга — ведущего архитектора Microsoft, ранее работавшего над Borland Delphi и C#. Публичный анонс состоялся 1 октября 2012 года на конференции Microsoft Build. Первая версия (0.5) была представлена как инструмент для разработчиков, желающих использовать строгую типизацию в экосистеме JavaScript.
Разработка велась в ответ на рост сложности веб-приложений и распространение больших JavaScript-проектов, где отсутствие статической типизации приводило к ошибкам, обнаруживаемым только во время выполнения программы. В 2014 году исходный код компилятора TypeScript был опубликован на GitHub под лицензией Apache 2.0. Проект развивается как open source, основной репозиторий размещён на GitHub в организации Microsoft.
С 2015 года TypeScript активно используется внутри Microsoft для разработки Visual Studio Code, написанного на TypeScript. В 2023 году вышла версия 5.0, а в 2024-м — 5.5 и 5.6, добавившие улучшения в вывод типов, поддержку новых возможностей ECMAScript и оптимизацию скорости компиляции.
¶Основные особенности
TypeScript расширяет JavaScript, добавляя статическую типизацию и ряд конструкций, отсутствующих в исходном языке:
- Статическая типизация — типы переменных, параметров функций и возвращаемых значений указываются явно или выводятся компилятором автоматически.
- Интерфейсы — механизм описания структуры объектов, обеспечивающий строгий контракт между компонентами.
- Обобщённые типы (generics) — возможность писать функции и классы, работающие с разными типами при сохранении типобезопасности.
- Перечисления (enum) — именованные наборы констант.
- Декораторы — аннотации для классов, методов и свойств, заимствованные из проекта TC39 для JavaScript.
- Строгий режим (strict mode) — включает дополнительные проверки, в том числе запрет неявного присваивания
nullиundefined. - Утилитарные типы — встроенные типы вроде
Partial,Pick,Record,Omitдля трансформации типов.
Весь валидный JavaScript является валидным TypeScript-кодом, поэтому миграция существующих проектов возможна постепенно: файлы .js переименовываются в .ts и типизируются итеративно.
¶Компиляция и инструментарий
Основной инструмент — компилятор tsc, запускаемый из командной строки или через менеджер пакетов npm. Компилятор проверяет типы, транслирует синтаксис в целевой стандарт ECMAScript и генерирует выходные файлы .js. При обнаружении ошибок типов компиляция прерывается с указанием номеров строк и описанием проблемы.
Для сборки проектов используются:
- npm и yarn — управление зависимостями;
- Webpack, Vite, esbuild — сборка и бандлинг;
- Jest, Vitest, Mocha — тестирование;
- ESLint и Prettier — линтинг и форматирование кода.
Среди редакторов и IDE наибольшую поддержку TypeScript получил в Visual Studio Code, где автодополнение, переход к определению и рефакторинг работают на основе компилятора TypeScript Language Service. Поддержка также реализована в WebStorm, IntelliJ IDEA и других средах разработки.
¶Применение
TypeScript широко применяется в веб-разработке. Среди крупных проектов и фреймворков, написанных на TypeScript или предоставляющих официальные типы:
- Angular — фреймворк Google, изначально созданный на TypeScript;
- NestJS — серверный фреймворк для Node.js;
- TypeORM, Prisma — ORM для работы с базами данных;
- React и Vue — поддерживают TypeScript через системы типов сообщества;
- Deno и Bun — альтернативные рантаймы JavaScript с нативной поддержкой TypeScript.
По данным опроса Stack Overflow Developer Survey, TypeScript регулярно входит в число наиболее любимых и используемых языков программирования. Многие крупные компании, включая Microsoft, Google, Airbnb и Slack, используют TypeScript для основной кодовой базы.
¶Критика и ограничения
Основные претензии к TypeScript связаны с усложнением инструментария: необходимость настройки компилятора, поддержки файлов конфигурации tsconfig.json и работы с системами типов сторонних библиотек. В некоторых случаях вывод типов может быть медленным на очень больших проектах. Также критикуется наличие «дыр» в системе типов — конструкций any, @ts-ignore и as, позволяющих обходить проверки. Разработчики TypeScript отмечают, что эти механизмы необходимы для постепенной миграции и совместимости с динамической природой JavaScript.
Исторические источники и документация:
- Официальная документация TypeScript — typescriptlang.org
- Репозиторий проекта на GitHub — github.com/microsoft/TypeScript
- Microsoft Build 2012 — анонс TypeScript
- Stack Overflow Developer Survey — ежегодные отчёты
