Открыть сервисСервис

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. При обнаружении ошибок типов компиляция прерывается с указанием номеров строк и описанием проблемы.

Для сборки проектов используются:

Среди редакторов и 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 — ежегодные отчёты
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru