The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Доступен язык TypeScript 2.0, продвигаемый Microsoft в качестве дополнения к JavaScript

23.09.2016 09:43

Компания 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", позволяющий определять свойства, доступные только для чтения.


  1. Главная ссылка к новости (https://blogs.msdn.microsoft.c...)
  2. OpenNews: Компания Bloomberg представила открытый оптимизирующий компилятор BuckleScript
  3. OpenNews: Компания Microsoft выпустила открытый редактор Visual Studio Code 1.0
  4. OpenNews: Представлена платформа NativeScript для разработки универсальных приложений на языке JavaScript
  5. OpenNews: Google развивает AtScript, вариант JavaScript с аннотациями типов
  6. OpenNews: Доступен язык программирования Dart 1.19
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/45201-typescript
Ключевые слова: typescript, javascript
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (60) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:34, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Тайпскрип - это как бабель, только от Майкрософта, я правильно понял?
     
     
  • 2.3, Аноним (-), 10:36, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Не-а. Это попытка причесать нетипизированный ужоснах ванильного JS. Удачная, между прочим, хоть и не без своих косяков.
     
     
  • 3.26, Вы забыли заполнить поле Name (?), 13:37, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Почему ужас?
     
     
  • 4.45, Аноним (-), 21:56, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Потому что без этого в проектах крупнее hello world начинают суммировать буханки хлеба с троллейбусами. И даже получают какой-то результат.
     
  • 3.33, Аноним (-), 17:10, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это чтобы рукожопы из типизированного мира не слишком лажали с JS.
     
     
  • 4.38, Илья (??), 17:55, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вы абсолютно правы, пишите дальше на js.
     
  • 4.46, Аноним (-), 21:58, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Это чтобы рукожопы из типизированного мира не слишком лажали с JS.

    Не подскажете, почему основная масса взломов серверов нынче происходит через вебню без жесткой типизации? :)

     
     
  • 5.53, Аноним (-), 03:51, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Не подскажете, почему основная масса взломов серверов нынче происходит через вебню без жесткой типизации?

    Секурные флеш и жаба апплеты на Безопасных Типизированных Языках(ТМ) наше всё.

     
     
  • 6.66, Аноним (-), 01:45, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Секурные флеш и жаба апплеты на Безопасных Типизированных Языках(ТМ) наше всё.

    Вспомнить именно случаи взлома флеш-апплетов ... ну наверное так возможно, но вы приведете навскидку хотя-бы пару примеров?

     
  • 6.71, Аноним (-), 09:56, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Секурнейший ActiveX забыли )
     
  • 5.60, Аноним (-), 11:09, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не подскажете, почему основная масса взломов серверов нынче происходит через вебню без жесткой типизации? :)

    А где статистику посмотреть можно?

     
     
  • 6.67, Аноним (-), 01:45, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > А где статистику посмотреть можно?

    А вот прямо здесь в новостях. Или в списке CVE, чтобы более прицельно.

     
  • 2.4, Аноним (-), 10:39, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, бабель - просто транспайлер. Тайпскрипт - синтаксический сахар + синтаксический анализатор + транспайлер.
     
  • 2.9, vitalif (ok), 11:19, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –15 +/
    TS - это просто даже ms понял что по ходу лучше на нем писать чем на c#...
     
     
  • 3.13, Аноним (-), 11:58, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > TS - это просто даже ms понял что по ходу лучше на
    > нем писать чем на c#...

    Сразу видно специалиста по C#. Да и по JS тоже.

     
  • 3.21, Аноним (-), 12:48, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    фактическим создателем TS является программист Андерс Хейлсберг, так же известный как создатель таких языков как Delphi, C#.

    Вам стоит научиться разделять c# и .net.

     
     
  • 4.64, Аноним (-), 16:46, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Сразу видно крупного специалиста по ЯП Delphi, к Вашему сведению, сэ-э-эр, - ... большой текст свёрнут, показать
     
     
  • 5.65, фывфыв (?), 01:01, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да будет вам известно, что delphi это не только среда, а как-раз таки язык, диалект Object Pascal'а.
     

  • 1.2, Аноним (-), 10:35, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Все эти ваши Flow и прочие надстройки — полумеры. Вот TypeScript загоняет разработчиков в типизированный загончик, и это правильно. Может там когда-нибудь дорастут потом до вменяемых инструментов для фронта, как вот Elm или PureScript.
     
     
  • 2.79, Andrey (??), 12:09, 26/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Мозгов не хватет. С JS кое-как справляются
     

  • 1.6, robux (ok), 10:47, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > расширяющего возможности JavaScript

    «Обними, расширь и уничтожь»:
    https://ru.wikipedia.org/wiki/Embrace,_Extend,_and_Extinguish

     
     
  • 2.10, karhu (?), 11:26, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    пока оно строго компилируется в js, волноваться не стоит.
    Да и не жалко будет, если честно.
     
     
  • 3.34, Аноним84701 (?), 17:16, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Да и не жалко будет, если честно.

    Даже не знаю, чем VBScript (внеднение которого МСовцами таки не прокатило) с activeXами в браузерах были бы лучше JS ;-)

     
  • 2.23, Comdiv (ok), 13:01, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уничтожать Javascript будут скорее через Webasssembly. Впрочем, к нему Microsoft тоже приложила руку. С технической же точки зрения, оба начинания верны.
     
     
  • 3.69, Аноним (-), 01:49, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > приложила руку. С технической же точки зрения, оба начинания верны.

    Они и к AV1 формально приложили руку. Но как-то совсем уж формально - участвуют в фоундэйшне. Нет, код они не пишут от слова вообще. Вкалывает на 70-80% гугл, 10-20% мозилла, по мелочи циска докидывает. Майкрософт оказывает моральную поддержку. Их наверное все должны будут благодарить что они в своих недобраузерах вообще этот кодек реализуют.

    Так, на подумать: Edge и IE - единственный выводок браузеров где нельзя например сделать server push сколь-нибудь просто и эффективно. И из-за этого куска индусского кода с 5% рынка - возни больше чем со всем остальным вместе взятым.

     
  • 2.72, Andrey Mitrofanov (?), 13:14, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> расширяющего возможности JavaScript
    > «Обними, расширь и уничтожь»:
    > https://ru.wikipedia.org/wiki/Embrace,_Extend,_and_Extinguish

    Тут, как и с остальными новоявленными чудесами "открытий" от Биллисофта не надо даже заглядывать внутрь -- [U] Микроскам зарелизил очередной Микрошлак [/U].

    +++Автор приносит свои благодарности http://www.urbandictionary.com/tags.php?tag=microsoft+nicknames за х[U] Microsludge, Microscam и Billysoft [/U]. Не пропустите страницы два http://www.urbandictionary.com/tags.php?tag=microsoft+nicknames&page=2 и тры http://www.urbandictionary.com/tags.php?tag=microsoft+nicknames&page=3 !  ---"Микрочлен"?

     

  • 1.8, _Vitaly_ (ok), 11:18, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Упрощена операция установки файлов ".d.ts" с информацией о типах для существующих библиотек

    Прям какая-то мегаачивка. Вообще-то они просто ручками репы понаделали, для относительно небольшого количества пакетов. И не очень понятно кто там будет поддерживать актуальность.

     
     
  • 2.11, Аноним (-), 11:30, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Неужели лучше ставить весь существующий хлам d.ts из одного пакета? Я, честно говоря, порадовался альтернативе в виде typings-менеджера
     

  • 1.18, Crazy Alex (ok), 12:44, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Приятная новость, но... это всё же джаваскрипт и веб-приложения.
     
     
  • 2.55, serg1224 (ok), 06:38, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Приятная новость, но... это всё же джаваскрипт и веб-приложения.

    Не вижу принципиальных преград для унификации скрипто-прикладного программирования и использования единого синтаксиса аля-JavaScript (возможно ECMAScript) вместо безмерно расплодившихся VBScript, VB, Delphi, PHP, Phyton, Ruby и прочих скриптовых поделок, включая PERL. Все они могут делать очень схожие вещи, все пишут враперы, плодят свои библиотеки и прочую экосистему. Уйма времени уходит на дублирование/перенос функционала вместо повышения качества реализации исполняемой среды, трансляторов-во-всё-что-хочешь и кода библиотек.

     
     
  • 3.56, serg1224 (ok), 07:21, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А уж сколько времени уходит на изучение всего этого скриптового борделя с ихними... большой текст свёрнут, показать
     
     
  • 4.63, Crazy Alex (??), 16:42, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Всё очень просто. Если ты пишешь для себя скрипты (т.е. какая-то локальная автоматизация) - ты пишешь их на чём-то одном. И никакой проблемы нет.

    Если же ты пишешь продукт - там, вообще говоря, скриптовым языкам (т.е. рассчитанным на "бысто и несложно написать") делать нечего. Вот что назрело - так это внятное разделение скриптовых и production языков.

     
     
  • 5.75, serg1224 (ok), 09:21, 26/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Всё очень просто. Если ты пишешь для себя скрипты (т.е. какая-то локальная
    > автоматизация) - ты пишешь их на чём-то одном. И никакой проблемы
    > нет.
    > Если же ты пишешь продукт - там, вообще говоря, скриптовым языкам (т.е.
    > рассчитанным на "бысто и несложно написать") делать нечего. Вот что назрело
    > - так это внятное разделение скриптовых и production языков.

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

     
  • 5.76, serg1224 (ok), 09:24, 26/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Если же ты пишешь продукт - там, вообще говоря, скриптовым языкам (т.е.
    > Вот что назрело
    > - так это внятное разделение скриптовых и production языков.

    Кстати, да, согласен. Вроде как JavaScript уже и не скрипт вовсе, а скорее становится языком программирования общего (универсального) назначения.

     
  • 3.70, Аноним (-), 01:51, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > использования единого синтаксиса аля-JavaScript (возможно ECMAScript) вместо безмерно
    > расплодившихся VBScript, VB, Delphi, PHP, Phyton, Ruby и прочих скриптовых поделок,

    И все б ничего если б JS не имел кучи своих проблем. Поэтому его наверное постепенно прибьют в пользу webassembly. А дальше кому на чем удобно тот на том и будет писать. Если кому удобно на Ruby писать - то наверное это его дело, не?

     
     
  • 4.77, serg1224 (ok), 09:39, 26/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> использования единого синтаксиса аля-JavaScript (возможно ECMAScript) вместо безмерно
    >> расплодившихся VBScript, VB, Delphi, PHP, Phyton, Ruby и прочих скриптовых поделок,
    > И все б ничего если б JS не имел кучи своих проблем.
    > Поэтому его наверное постепенно прибьют в пользу webassembly. А дальше кому
    > на чем удобно тот на том и будет писать.

    Да у всех языков есть свои неудобства и недостатки, но синтаксис в большинстве случаев уже можно было бы и унифицировать.


    > Если кому
    > удобно на Ruby писать - то наверное это его дело, не?

    Таки да.
    А ещё бывают полиглоты. Им вообще пофиг сколько языков учить.

     

  • 1.20, Кир (?), 12:48, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не, вы, друзья, как ни садитесь... Жабоскрипт убог by design, и припарки тут не помогут, только живительная эвтаназия.
     
     
  • 2.22, Аноним (-), 12:52, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > обоссаный javascript

    тут вы правы

     
  • 2.24, Comdiv (ok), 13:04, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Припарки нужны пока не заработает в полную силу Webassembly.


     
     
  • 3.44, Аноним (-), 21:08, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Webassembly выплевывает ЖабоАсам
     
     
  • 4.48, Аноним (-), 22:01, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Webassembly выплевывает ЖабоАсам

    Его выплевывают всем - он ЯП не навязывает. На чем хочешь на том и пиши. А то когда промежуточное представление делают из JS как всякие emscripten, получается кошмар на улице вязов.

     
  • 4.68, Comdiv (ok), 01:46, 25/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Согласно описания, это дополнительная возможность, а не обязанность

    >WebAssembly describes a memory-safe, sandboxed execution environment
    >that may even be implemented inside existing JavaScript virtual machines.

     

  • 1.25, krasnodar2000 (?), 13:31, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    По аналогии как C++ это С с классами,
    TypeScript это Javascript с типами

    поскольку js убог, то Scala.js наше все

     
     
  • 2.28, ШШШШ (?), 14:01, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А почему не Clojurescript?
     
  • 2.37, Crazy Alex (ok), 17:53, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О да, заменить одно извращение на другое - самое оно.
     

  • 1.31, Аноним (-), 16:30, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Я за Дарт. Гораздо более правильная разработка, а не этот обрезок.
     
  • 1.35, Аноним (-), 17:34, 23/09/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Теперь бы еще браузеры научить понимать этот TypeScript без перевода в JS
     
     
  • 2.36, Аноним (-), 17:36, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    P.S.
    тем более, если он обратно совместим с JS, страницы не поломаются.
     
  • 2.39, Аноним (-), 18:29, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Браузерам не надо уметь typescript. Пишете на TS, дальше всё компилируется и собирается в js файл/файлы, которые отлично работают на странице в браузере. Angular2 тому живая иллюстрация для примера.
     
     
  • 3.41, Аноним (-), 19:06, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И js файлы сохраняют информацию о типах? Или как после применяются все эти оптимизации?
     
     
  • 4.43, Аноним (-), 20:53, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вся типизация работает на уровне статического анализа. Соответственно т.к. результат написания программ TS всегда JS, итоговый код ничего не знает о типах в runtime. Но поверьте, имея статический анализ типов, описания интерфейсов и типов, нормальные стрелочный функции, которые в классе за вас сделают замыкание, фичи типа async-await, декораторы на уровне языка и прочее, прочее, прочее, что дальше идёт в ES6, ES7 (и надеюсь и далее будет развиваться), так вот всё это сильно улучшает как front-end разработку, так и бекенд на nodejs.
     
     
  • 5.74, Илья (??), 08:24, 26/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > бекенд на nodejs.

    Мне сразу представляется банковский счет, на котором лежит NaN рублей.
    И вы туда перечисляете undefined рублей.

     
     
  • 6.78, Аноним (-), 10:48, 26/09/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Для каждой задачи выбирается свой набор инструментов, а не наоборот. Возможно у вас как-то иначе, поэтому NaN рублей пополняется на Undefined рублей.
     
  • 4.49, Аноним (-), 22:10, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ничего не сохраняется. Никаких реальных оптимизаций не применяется.
     
     
  • 5.59, Аноним (-), 10:51, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На счёт оптимизаций всё почти так, кроме некоторых моментов, связанных с опциями компиляции, например возможности указать какую версию ES вы хотите видеть в итоговом файле. Например ES5 для фронта, потому что больше браузеры сейчас массово не умеют, или ES6 для бекенда, если у вас nodejs 6х, например, и вы хотите всякие @decorator, @proxy, async/await и прочее в нативной форме использовать или в принципе использовать.
     
  • 3.50, Аноним (-), 22:50, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И как эту скомпилированную кучу добра потом отлаживать?
     
     
  • 4.51, KonstantinB (ok), 23:15, 23/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    sourcemaps
     
  • 4.54, Вхухоль (?), 06:34, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Благодаря типизации код пишется сразу без багов.
     
  • 4.58, Аноним (-), 10:40, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отладка поддерживается браузером по на основе sourcemap файлов по TS файлу. Процесс прозрачный и не требует дополнительных телодвижений. Не хочется отлаживать TS через sourcemap - можно заниматься отладкой js, там тоже особо страшного ничего нет, это не бинарный или обфусцированный код, по дефолту там даже форматирование человекочитаемое. Разумеется в этой ситуации необходимо быть в курсе в общих чертах, "что такое JS" чуть глубже, чем "hello world": языковые конструкции классов, приватных членов, обращений к this внутри методов и т.п. неизбежно обретают при компиляции полноразмерную JS реализацию в соответствии с общеизвестными паттернами и возможностями/ограничениями языка конкретной версии ES,под которую компилировался код.
     
     
  • 5.62, Аноним (-), 12:17, 24/09/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Спасибо.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру