Андерс Хейлсберг, Microsoft C#
Андерс Хейлсберг: «Мы все чаще слышим жалобы, что писать крупномасштабные приложения на JavaScript слишком сложно". Источник: DBegley/Wikipedia

Эти особенности представлены в виде расширения под названием TypeScript. Они реализуют для JavaScript статические типы, классы и модульность.

«Последние пять лет мы все чаще слышим жалобы заказчиков, что писать крупномасштабные приложения на JavaScript слишком сложно, — говорит Андерс Хейлсберг, главный архитектор Microsoft C#. — TypeScript призван упростить разработку на JavaScript и заложить основу для развитых средств отладки, а также механизмов автозавершения кода, рефакторинга и упрощенной навигации по программам большого объема».

На разработку TypeScript инженеры Microsoft потратили больше двух лет, добавил он. Корпорация опубликовала спецификации TypeScript, а также компилятор с открытым кодом в репозитории CodePlex. Кроме того, в Microsoft разработали модуль расширения TypeScript для Visual Studio.

TypeScript — не новый язык, а скорее надстройка над JavaScript, подчеркнул Хейлсберг. Разработчик может писать на JavaScript, используя элементы TypeScript по мере необходимости. Затем код передается компилятору TypeScript, который преобразует программу в обычный код на JavaScript.

«TypeScript — это в конечном счете и есть JavaScript, и все существующие библиотеки JavaScript смогут без изменений работать с TypeScript, — объясняет Хейлсберг. — Компилятор TypeScript выдает код, который работает в любом браузере».

TypeScript был создан, чтобы выполнить требования растущего числа разработчиков, заинтересованных в создании на JavaScript крупномасштабных веб-приложений.

«JavaScript был задуман как язык скриптов, — напоминает Хейлсберг. — Он не был рассчитан на разработку кодовых баз среднего и большого масштаба и потому в нем не было ни классов, ни модулей. JavaScript — это полностью динамический язык, лишенный статических типов, которые являются одним из столпов современных функционально богатых интегрированных сред разработки».

При статической типизации программист должен заранее присваивать определенный тип каждой создаваемой им переменной. В JavaScript же типизация динамическая, при которой тип переменных не нужно объявлять заранее, что упрощает написание кода для менее опытных.

При статической типизации компилятор может выдавать более подробные отчеты об ошибках, а также лучше прогнозировать потребности программы в ресурсах, поскольку есть возможность определить, сколько места займет в памяти переменная того или иного типа. В Visual Studio благодаря TypeScript система автозавершения кода IntelliSense сможет предугадывать набираемые имена переменных JavaScript так же эффективно, как это происходит при программировании на C# и других языках со статической типизацией.

Объявить тип можно в любом месте кода. Переменные необъявленного типа считаются традиционными динамическими переменными JavaScript. Разработчики могут добавлять объявления типов к уже существующим библиотекам.

Помимо статических типов, TypeScript реализует модульность и возможность создавать классы; обе эти возможности отвечают утверждаемой сейчас спецификации новой версии ECMAScript, стандарта, являющегося основой JavaScript.

Классы позволят разработчикам многократно использовать в программах ранее созданную функциональность. Модульность помогает упорядочивать большие кодовые базы, а также упрощает модификацию фрагмента кода без влияния на другие части.

Microsoft — не первая, кто берется за расширение возможностей JavaScript. В Google тоже пытаются преодолеть недостатки языка, затрудняющие создание сложных приложений. Для этого компания разработала новый язык под названием Dart.

Но у TypeScript, похоже, есть преимущество перед Dart, поскольку первый не требует от разработчиков изучения совершенно нового языка. Достаточно лишь освоить особенности TypeScript, и можно продолжать пользоваться привычным JavaScript, подчеркнул Хейлсберг.

Еще одно потенциальное преимущество TypeScript в том, что в браузерах не потребуются новые технологии, поскольку код TypeScript преобразуется в обычный JavaScript, работающий в любом браузере. Как утверждет Хейлсберг, по этой же причине код TypeScript не создает задержек при исполнении.

Спецификация TypeScript свободно доступна по лицензии OWFa 1.0 организации Open Web Foundation. В Microsoft рассчитывают на помощь сообщества Open Source в дальнейшей разработке надстройки. Компилятор TypeScript распространяется по лицензии Apache 2.0.