Microsoft выпустила вторую основную версию языка TypeScript, который компания позиционирует как развитие JavaScript. Этот новый фреймворк (компилятор и набор сопутствующих библиотек) уже доступен для свободной загрузки в составе Visual Studio 2015 Update 3, а также в составе ряда других инструментов. Как сообщают авторы разработки, TypeScript 2.0 ориентирован на повышение производительности труда программистов, язык полностью соответствует стандарту ECMAscript и совместим с JavaScript, но при этом предлагает ряд полезных расширений.
JavaScript, которому в этом году исполнилось 20 лет, казалось бы не входит в элиту языков программирования, предназначенных для настоящих профессионалов. За счет свой своей простоты и ориентации на выполнение самой массовой задачи Web-программирования (в среде браузера, на стороне клиента) он является самым популярным инструментом, доступным для пользователей-непрограммистов. Однако при этом именно JavaScript является и одним из самых востребованных языков для истинных профессионалов, поскольку язык является стандартом де-факто Web-разработки, на него приходится подавляющий объем коммерческих и внутрикорпоративных Web-приложений.
А так как успех того или иного браузера в существенной или даже в решающей степени зависит от его поддержки со стороны независимых разработчиков, не говоря уже об огромной армии непрофессионалов (а тут речь уже идет о десятках миллионов человек), то вполне понятно, что основные поставщики браузеров пытаются увести программистов в свою стороны, предлагая собственные улучшенные варианты JavaScript. Так, Microsoft практически одновременно с появлением JavaScript 1.0 (в составе Netscape 2.0 в марте 1996 г.) представила свой его аналог JScript. Трудно оценить влияние этого альтернативного языка на конкуренцию браузеров, но далее произошла интересная вещь: получив уже через несколько лет со своим Internet Expolorer лидирующие позиции на рынке браузеров, Microsoft взяла в качестве основы клиентского Web-программирования чужой вариант языка — JavaScript, в развитии которого компания принимала активное участие (правда, не забывая и про поддержку JScript)
Но в 2012 г. Редмонд предложил расширение JavaScript, его новый вариант — TypeScript. Наверное, это было не случайно: именно тогда IE стал терять свою роль лидера под напором Mozilla Firefox и Google Chrome. Ключевым новшеством TypeScript стала идея устранением «неправильностей» исходного языка, в первую очередь имелась в виду слабая (динамическая) типизация данных (по сути — отсутствие описания типов данных), которая, с одной стороны, была нарушением классических принципов построения «правильных» языков программирования, а с другой — во многом как раз и обеспечила массовость и популярность JavaScript. В TypeScript предлагалось ввести строгую (статическую) типизацию данных (Type — это не «печатать на клавиатуре», а «тип»), а сам язык предназначался для профессиональных разработчиков, которым для создания достаточно сложных программ нужны «правильные инструменты». Отметим, что при этом TypeScript не является заменой JavaScript, а скорее представляет собой надстройку над базовой системой: код, написанный на TypeScript, компилируется в JavaScript, соответственно этот код обратно совместим с JavaScript, модули классического JavaScript могут использоваться в TypeScript, что допускает смешанное использование динамической и статической типизации данных. TypeScript может использоваться совместно с другими альтернативными вариантами JavaScript (например, CoffeeScript и Google Angular 2 JavaScript).
Основные улучшения TypeScript 2.0 включают упрощение деклараций типов данных в файлах, использование более гибкого механизма передачи аргументов между модулями и появление «ненулевых» (non-nullable) типов, в которых не допускается применение нулевых или неопределенных значений переменных. Реализация этих новшеств, по мнению авторов языка, позволит создавать более «строгий» программный код и избежать ошибок, в основе которых — традиционные «вольности» JavaScript. В последующих обновлениях TypeScript (уже говорится о появление в ближайшее время версии 2.1) планируется усилить поддержку асинхронной работы программ и продолжить развитие его возможностей с учетом создания достаточно сложного ПО профессиональными разработчиками.