The OpenNET Project / Index page

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

Увидел свет TypeScript 1.0, продвигаемый Microsoft в качестве альтернативы JavaScript

04.04.2014 09:36

Компания Microsoft опубликовала первый стабильный выпуск языка программирования TypeScript 1.0, который позиционируется в качестве расширяющего возможности JavaScript языка для разработки web-приложений. Код компилятора, транслирующего код TypeScript в представление JavaScript, распространяется под лицензией Apache, разработка ведётся в публичном репозитории через сервис CodePlex. Спецификации языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement.

В отличие от развиваемого компанией Google проекта Dart, TypeScript не является кардинальной переработкой JavaScript, а лишь расширяет возможности JavaScript, оставаясь полностью обратно совместимым, что сводит к минимуму затраты на адаптацию существующих приложений. От JavaScript новый язык отличается возможностью явного определения типов, поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей. Статическая типизация позволяет избежать многих ошибок в процессе разработки, даёт возможность задействовать дополнительные техники оптимизации, упрощает отладку и делает код более читаемым и простым для доработки и поддержки сторонними разработчиками.

Основной принцип языка - весь существующий код на JavaScript совместим с TypeScript, т.е. в программах на TypeScript можно использовать стандартные JavaScript-библиотеки и ранее созданные наработки. Более того, можно оставить существующие JavaScript-проекты в неизменном виде, а данные о типизации разместить в виде аннотаций, которые можно поместить в отдельные файлы, которые не будут мешать разработке и прямому использованию проекта (например, подобный подход удобен при разработке JavaScript-библиотек). Кроме аннотаций данные о типах могут быть определены с использованием "generic", что позволяет вводить специальные дополнительные параметры типов, которые дают возможность выявлять ошибки в реализации классов, интерфейсов и методов без дополнительных аннотаций типов (например, генерик для функции map позволяет считать, что переменные создаваемые конструкциями в которых используется map можно рассматривать как числовые).

Итоговое приложение на TypeScript компилируется в обычный JavaScript, который можно выполнить в любом современном web-браузере или использовать совместно с серверной платформой Node.js. Редактировать код можно в штатных редакторах, например, файлы для восприятия расширенного синтаксиса TypeScript уже подготовлены для Vim и Emacs. Для разработки с использованием TypeScript предлагаются плагины для интегрированных сред разработки Eclipse и Visual Studio 2012. Начиная с весеннего обновления Visual Studio 2013 и Visual Studio Web Express 2013, поддержка TypeScript включена в базовую поставку. Файлы с декларациями статических типов подготовлены для некоторых популярных JavaScript-библиотек, среди которых jQuery.

Новый выпуск ознаменовал окончание стадии формирования базовой функциональности. По сравнению с прошлым выпуском проведена работа по упрощению системы типизации: улучшена сочетаемость генериков со сложными типами; тип "any" отныне выполняет роль универсальной маски, подходящей для любых типов. В частности, выражение "any" теперь позволяет обойти проверку типов в том числе и в процессе формирования субклассов и интерфейсов.

  1. Главная ссылка к новости (http://blogs.msdn.com/b/typesc...)
  2. OpenNews: Выпуск языка программирования Dart 1.2, развиваемого Google для замены JavaScript
  3. OpenNews: Ассоциация Ecma сформировала комитет для стандартизации языка Dart
  4. OpenNews: Открыт код Duetto, системы для запуска в web-браузере проектов на языке C++
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/39488-typescript
Ключевые слова: typescript
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (47) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 09:48, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Очень крутая штука для больших проектов, где строгая типизация решает.
     
     
  • 2.2, Аноним (-), 09:56, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А что js уже поддерживает строгую типизацию или TypeScript транслировать в asm.js? Если конечный язык а это js не поддерживает строгой типизации то и профит не велик.
    А вообще расскажите чем строгая типизация решает в больших проектах?
     
     
  • 3.6, imprtat (ok), 10:29, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >>А вообще расскажите чем строгая типизация решает в больших проектах?

    Строгая типизация позволяет предотвратить множество ошибок на этапе написания кода, что существенно сокращает затраты времени на дебаг и багфикс. Самое плохое что из-за ошибки с неправильным типом приложение может работать (не падать), возможно даже правильно, жить такой баг может очень долго, а когда кодовая база увеличится искать ошибку будет сложнее. По этому лучше получить ошибку на этапе компиляции, чем узнать про нее слишком поздно или никогда.
    Для IDE работа с JS вообще катастрофа, например, без типа переменных они не могут определить можно ли передать ее в качестве аргумента ф-ии, в добавок к этому множество контекстов с ссылками на другие контексты создают ад в котором сложно найти ф-ии/переменные доступные из текущего контекста.

     
     
  • 4.12, Аноним (-), 11:00, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    опять все перемешали читайте  http://habrahabr.ru/post/161205/
     
  • 4.36, Rodegast (??), 15:31, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Учи матчасть. Строгая и Статическая типизация это абсолютно разные вещи.
     
     
     
    Часть нити удалена модератором

  • 6.39, rshadow (ok), 16:01, 04/04/2014 [ответить]  
  • +2 +/
    > Считаете нужным исправить - исправьте

    Скальпель в студию!

     
  • 4.53, angra (ok), 19:57, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Строгая типизация позволяет дурачкам быть уверенными, что у них все правильно, даже если на самом деле есть ошибка. Если в функцию передали не ту переменную или переменные не в том порядке, но при этом тип совпал, то данный вызов не станет корректным с точки зрения логики, но будет таковым с точки зрения транслятора и дурачок будет радоваться, что его программка собралась.
     
     
  • 5.57, Аноним (-), 23:11, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Компилируется == Работает
     
     
  • 6.60, тоже Аноним (ok), 11:12, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Работает != Делает то, что имел в виду программист
     
  • 5.58, Аноним (-), 17:45, 05/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дурачок не понимает что в одном случае можно отловить определённый класс ошибок, а в другом - принципиально нельзя. А то что кто-то делает вывод о корректности программы только на основании отсутствия ошибок компиляции - это вы других по себе судите.
     
  • 5.59, imprtat (ok), 00:37, 06/04/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Строгая типизация позволяет дурачкам быть уверенными, что у них все правильно, даже
    > если на самом деле есть ошибка. Если в функцию передали не
    > ту переменную или переменные не в том порядке, но при этом
    > тип совпал, то данный вызов не станет корректным с точки зрения
    > логики, но будет таковым с точки зрения транслятора и дурачок будет
    > радоваться, что его программка собралась.

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

     
  • 5.61, Вячеслав (??), 12:11, 30/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Строгая типизация позволяет на этапе компиляции избавиться от тех ошибок, которые пришлось бы искать и отлаживать уже в запущенной программе.

    И да, ТОЛЬКО дурачки уверены, что раз программа собралась, то все работает, ибо статическая типизация - не панацея, а инструмент, позволяющий предотвратить множество ошибок.

     
  • 4.56, fi (ok), 22:29, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Только что наш разработчик прошелся по граблям со строгой типизацией в php aka '===', тут вот грабли и поперли - код то работает, то не работает, в зависимости откуда идут данные - то там строка вида '1', то тоже самое целое.

    Так что не панацея, 100%!

     
     
  • 5.62, Вячеслав (??), 12:12, 30/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Не панацея, но инструмент.
     
  • 2.7, rob pike (?), 10:32, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >больших проектов, где строгая типизация решает

    Нет, не решает.
    Серебряной пули не существует.

     
     
     
    Часть нити удалена модератором

  • 4.31, rob pike (?), 15:04, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Является ли целью разработки ПО упрощение жизни разработчикам?

    Можно вот, как Сиверс, просто всех посылать с их патчами - это еще более упрощает жизнь.

    Вопрос - повышается ли от этого качество или иные параметры разработки.

     
     
     
    Часть нити удалена модератором

  • 6.42, rob pike (?), 16:23, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну зачем же так? Вы бы лучше подумали над тем что вам говорят.
    Проблемы не заключаются в типизации per se. А в квалификации разработчиков, сложности проекта и многих иных вещах.
    И если вы соберете ваш проект без единого warning-a, это не является не только гарантией чего бы то ни было, но и даже индикатором того что вероятность его падения в рантайме стала сколько-нибудь меньше. Если вам нравятся иллюзии - ваше право, конечно, особенно если именно это вы имели в виду говоря об упрощении жизни.
     
     
     
    Часть нити удалена модератором

  • 8.52, rob pike (?), 18:40, 04/04/2014 [ответить]  
  • +3 +/
    Какие мудрые слова И как же это сообразуется с выдвинутым прежде тезисом о том ... текст свёрнут, показать
     
  • 2.55, Michael Shigorin (ok), 20:38, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Очень крутая штука для больших проектов, где строгая типизация решает.

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

     

  • 1.3, Аноним (-), 09:58, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Чем он лучше, CoffeScript ?
     
     
  • 2.18, Аноним (-), 11:29, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Он не лучше, он другой. Cofe - синтаксический сахар в стиле Ruby, Type - в стиле C#.
     
  • 2.32, rob pike (?), 15:06, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Только ClojureScript, только хардкор

     
  • 2.63, Вячеслав (??), 12:13, 30/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Фишка кофескрипта - синтаксический сахар, а тайпскрипта - статическая типизация.

    Для крупных проектов это очень важно.

     

  • 1.5, John (??), 10:22, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Обычный подход этой конторы: влезть и "улучшить" (завязать на себя). Мне любопытно: неужели до сих пор на это кто-то ведётся?
     
     
  • 2.8, Отражение луны (ok), 10:34, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Каким образом TypeScript завяжет кого-то на Майкрософт? Это не замена js, предлагаю сначала разобраться, а потом уже начать хейтить.
     
     
  • 3.14, Аноним (-), 11:02, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Каким образом TypeScript завяжет кого-то на Майкрософт? Это не замена js, предлагаю
    > сначала разобраться, а потом уже начать хейтить.

    Разобрались, CoffeScript появился куда раньше и выглядит гораздо лучше

     
     
  • 4.64, Вячеслав (??), 12:14, 30/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Если вам нужен сахар - берите кофескрипт, если нужна проверка типов - берите тайпскрипт.

    Эти языки не конкурируют, а решают разные задачи.

     
     
  • 5.67, Michael Shigorin (ok), 18:40, 30/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Если вам нужен сахар - берите кофескрипт, если нужна проверка типов -
    > берите тайпскрипт.

    С учётом того, что на js скорее не пишу, а проверку типов проходил на Modula-2 -- сейчас бы скорее сдул пыть с книжки по ocaml, если уж нужны строгие типы.  Потому что они и впрямь разумней с выведением, а не самому гоняться с мухобойкой.

     
  • 3.20, Аноним (-), 11:31, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Стратегия МС: Embrace, Extend, Extinguish.

    Сначала embrace: "ого, джаваскрипт! круто! свободно! опенсорсно! как же легко и приятно следовать стандартам!".
    Теперь вот попытка extend: "давайте чуть-чуть расширим вот здесь и здесь, будет еще лучше! конечно же, все останется обратно совместимым, честно-честно!".
    Extinguish, как нас уже учила не раз история (Kerberos, IE6, Java - первое, что пришло на ум) будет заключаться в том, что вот про это "честно-честно!" однажды (или постепенно - это неважно) возьмут и забудут. И все.

    Противиться тупескрипту можно уже на основании вышесказанного. Кто не знает свою историю, тот обречен ее повторить.

     
     
  • 4.26, клоун Стаканчик (?), 12:14, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А теперь приложительно к systemD, пожалуйста.
     
     
  • 5.29, Аноним (-), 12:55, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +4 +/
    И на системды управа найдётся, не переживай.
     
  • 3.49, Аноним (-), 17:58, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ...а вот и первый поциент! Тебе, как первому - зонд только на полшишечки.
     

  • 1.13, Аноним (-), 11:01, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Просто оставлю это здесь:
    http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish
     
     
  • 2.15, Аноним (-), 11:06, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    думаешь хомячкам это нужно? Пусть жрут кактус со вкусом ванили дальше
     

  • 1.21, анонимус (??), 11:43, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Компания Microsoft опубликовала первый стабильный выпуск языка программирования TypeScript 1.0, который позиционируется в качестве расширяющего возможности JavaScript языка для разработки web-приложений

    До сих пор пытаются использовать стратегию Embrace, Extend, and Extinguish?

     
     
  • 2.33, rob pike (?), 15:07, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А что, она перестала работать?
     

  • 1.25, Аноним (-), 12:13, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сначала прочитал как TrueCrypt, потом увидел Microsoft, потом у меня чуть не произошёл приступ паранойи :)
     
  • 1.27, Аноним (-), 12:34, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Скоро у любой компании будет собственный язык программирования, не важно какой, главное что без его наличия нельзя будет получить признание пользователей
     
  • 1.34, Lain_13 (ok), 15:16, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Данунахрен, если вносить глобальные улучшения, то давайте сразу Dart, а не это огрызочное решение.
     
  • 1.35, Тот_Самый_Анонимус (?), 15:24, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда замену готовит гугел, то все фапают на гугел, когда майкрософт, то все ядом исходятся, хотя абе фирмы - акулы. Что творится с миром?
     
     
  • 2.41, Lain_13 (ok), 16:03, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У Гугла реально переработанное решение, которое касается далеко не только типизации и классов, но затрагивает даже DOM. В принципе TS не плох в качестве сиюминутной меры, но в долгосрочной перспективе Dart смотрится лучше.
     
     
  • 3.43, Crazy Alex (ok), 16:31, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Так и TS можно дальше развивать - возможно ещё и с дальнейшим сохранением обратной совместимости. Не то, чтобы я был против дарта - но философия typescript - "давайте типизируем как можно больше - для компилятора и человека", а у дарта - "давайте типизируем там, где деваться некуда - для компилятора". Лично мне первое ближе.
     
     
  • 4.45, Lain_13 (ok), 17:09, 04/04/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У Дарта же «давайте приведёт в порядок для всех то, что представляет из себя кучу мусора и временных решений». Вон в JS сколько разных функций для выбора элемента на странице, в Dart же оставили только querySelector и querySelectorAll, коих более чем достаточно. Множества потомков в DOM же стали настоящими массивами, а не притворяются таковыми. Так что Dart куда больше «для людей», чем TS. Причём уже, а не «можно дорабатывать». Сохранение же обратной совместимости только усугубляет проблемы с JS. В принципе можно заменить JS на TS как очередную обратно совместимую заплатку на косяки JS и ввести параллельно Dart. Собственно никто и не предлагает _заменить_ JS на Dart.
     
     
  • 5.65, Вячеслав (??), 12:16, 30/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Тайпскрипт можно использовать уже сейчас, а дарт еще не скоро.
     
     
  • 6.66, Lain_13_too_lazy_to_login (?), 13:59, 30/04/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > Тайпскрипт можно использовать уже сейчас, а дарт еще не скоро.

    Сборки Хрома с Дартом уже есть, компиляция в обычный JS в качестве временного решения тоже есть. Сиди да пользуйся сколько влезет. В чём проблема-то? А выкатывать хоть сколько-то серьёзный код ни на TS, ни на Dart пока не время и раньше, чем поддержка оного из них появится во всех хоть сколько-то серьёзных браузерах, говорить об их использовании смысла имеет мало. А экспериментировать — это всегда пожалуйста прямо хоть здесь и сейчас.

     

  • 1.50, Аноним (-), 18:02, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >

    "Но тут некая группа в Microsoft нашла фатальный недостаток в Java - её писали не они! Это было исправлено созданием то ли J, то ли Jole, а может, и ActiveJ (если честно, я просто не помню), точно такого же как Java, но другого. Это было круто, но Sun засудило Microsoft по какому-то дряхлому закону. Это была явная попытка задушить право Microsoft выпускать такие же продукты, как у других, но другие."

    13 лет прошло с момента написания, а ведь поди ж ты - не стареет, как сказка о рыбаке и золотой рыбке.

     
  • 1.54, Аноним (-), 20:27, 04/04/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    MS уже поздно http://coffeescript.org/ ну и Dart
     

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



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

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