Доступен язык TypeScript 2.0, продвигаемый Microsoft в качестве дополнения к JavaScript
Компания Microsoft опубликовала релиз TypeScript 2.0, языка для разработки web-приложений, расширяющего возможности JavaScript. Код компилятора, транслирующего код TypeScript в представление JavaScript, распространяется под лицензией Apache 2.0, разработка ведётся в публичном репозитории через сервис GitHub. Спецификации языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement.
TypeScript расширяет возможности JavaScript, оставаясь полностью обратно совместимым, что сводит к минимуму затраты на адаптацию существующих приложений. Основной принцип языка - весь существующий код на JavaScript совместим с TypeScript, т.е. в программах на TypeScript можно использовать стандартные JavaScript-библиотеки и ранее созданные наработки. Более того, можно оставить существующие JavaScript-проекты в неизменном виде, а данные о типизации разместить в виде аннотаций, которые можно поместить в отдельные файлы, которые не будут мешать разработке и прямому использованию проекта (например, подобный подход удобен при разработке JavaScript-библиотек). Итоговое приложение на TypeScript компилируется в обычный JavaScript, который можно выполнить в любом современном web-браузере или использовать c Node.js.
От JavaScript новый язык отличается средствами для явного определения типов, поддержкой использования полноценных классов, а также поддержкой подключения модулей. Статическая типизация позволяет избежать многих ошибок в процессе разработки, даёт возможность задействовать дополнительные техники оптимизации, упрощает отладку и делает код более читаемым и простым для доработки и поддержки сторонними разработчиками. Кроме аннотаций данные о типах могут быть определены с использованием "generic", что позволяет вводить специальные дополнительные параметры типов, которые дают возможность выявлять ошибки в реализации классов, интерфейсов и методов без дополнительных аннотаций типов (например, генерик для функции map позволяет считать, что переменные создаваемые конструкциями в которых используется map можно рассматривать как числовые).
Основные новшества TypeScript 2.0:
- Упрощена операция установки файлов ".d.ts" с информацией о типах для существующих библиотек. Например, для установки данных о типах библиотеки lodash теперь достаточно выполнить команду "npm install -s @types/lodash" и загруженные данные о типах будут автоматически использованы при импорте библиотеки lodash в любой части приложения без необходимости применения дополнительных инструментов для управления зависимостями;
- Возможность определения типов, не допускающих пустые (null) и неопределённые значения (undefined), а также отдельные типы Null и Undefined, которые позволяют разработчику явно контролировать ситуации в которых допустимо использование значений null и undefined. Так как изменение в обработке null/undefined нарушает обратную совместимость для включения проверки добавлен отдельный режим "--strictNullChecks";
- Расширение средств для оценки применимости типов на основе анализа потока выполнения программы, позволяющих, например, выявлять ситуации использования неинициализированных значений из-за несрабатывания условного оператора, которые не определяются статическим анализатором и возникают в зависимости от хода выполнения программы;
- Добавлен модификатор "readonly", позволяющий определять свойства, доступные только для чтения.