Вышел TypeScript 0.9

    Вчера (ночью по Москве) вышел долгожданный релиз TypeScript 0.9.

    Для тех, кто не знает, что это такое:
    TypeScript это язык программирования для разработки приложений на JavaScript.
    TypeScript это типизированное расширение языка JavaScript, которое компилируется в JavaScript.
    Любой браузер. Любой хост. Любая ОС. Open Source.
    (с) www.typescriptlang.org

    Под катом ключевые новшества. Приглашаю к дискуссии!


    Я сознательно делаю только краткую выжимку, за примерами и более подробным описанием предлагаю вам перейти на официальный блог.

    Ключевыми новшествами являются:
    • Generics — пожалуй, самая ожидаемая фича. На нее было настолько много запросов, что даже пришлось перенести ее из 1.0 в версию 0.9. Работать с массивами теперь одно удовольствие. И не только с ними.
    • Перегрузка по константе — теперь перегружать метод можно по значению аргумента. Такое часто применяется в JavaScript, например с core library. createElement(tagName: 'canvas') и createElement(tagName: 'div') теперь разные методы. Представляю, как это может еще помочь упростить работу с jQuery-плагинами.
    • Export в AMD & CommonJS — для тех, кто знаком с предыдущими 2-мя терминами, раньше нельзя было написать export = MyClass, а теперь можно. Прогресс!
    • Enums — немного поменяли синтаксис для enums.
    • Declaration merging — сложнопереводимый термин. В общем, теперь к функции с легкостью добавить пару статических свойств и ничего не сломать. Подробней лучше посмотреть пример кода в исходном блоге.
    • Компилятор — говорят, сильно переписали компилятор и он теперь стал быстрее в разы. Но только под Windows и в виде плагина для Visual Studio. Консольная версия компилятора — стала наоборот медленней. Обещают поменять ситуацию в 0.9.1, т.е. скоро.
    • Бочка дегтя — конечно, при переходе на новую версию многое у вас сломается. В релизе достаточно несовместимых изменений. Как с ними бороться — заботливо описано в отдельной статье. Ну и так как TypeScript компилируемый язык и IDE дает вам возможности статического анализа — особых проблем при переходе возникнуть не должно.


    Исходник:
    blogs.msdn.com/b/typescript/archive/2013/06/18/announcing-typescript-0-9.aspx

    Так же доступно отличное видео с Anders Hejlsberg, Steve Lucco, Luke Hoban, ключевыми разработчиками TypeScript:
    channel9.msdn.com/Blogs/Charles/Anders-Hejlsberg-Steve-Lucco-and-Luke-Hoban-Inside-TypeScript-09

    Всем приятных приключений! И напоследок, небольшой опрос.

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    А вы пользовались уже TypeScript?

    • 22,3%Да, очень нравится, буду продолжать132
    • 4,2%Да, не понравилось, в топку TypeScript25
    • 40,6%Нет, но очень хочу и теперь точно попробую240
    • 32,8%Нет, и не буду. Мне хватает %MY_PROGRAMMING_LANGUAGE%194

    Похожие публикации

    Средняя зарплата в IT

    113 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 10 037 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
    Реклама

    Комментарии 36

      +3
      Вот если бы как-ниубдь скрестить typescript с coffeescript — получился бы суперязык!
      Я после года разработки на кофе уже не смогу наверное привыкнуть назад ко всем этим фигурным скобочкам…
        +4
        Нет, пожалуйста, не надо :)
        Я наоборот, плохо воспринимаю языки, которые не используют скобки для разделения блоков.

        Да и сам CoffeeScript неплох.
        Особенно, если к нему прибавить еще и IcedCoffeeScript
        Думаю, имея такого «конкурента», CoffeeScript тоже начнет динамичнее развиваться.
          +4
          Я наоборот, плохо воспринимаю языки, которые не используют скобки для разделения блоков.

          К отсутствию скобок так быстро привыкаешь, что потом «за уши не оттянешь»
            0
            Возможно. Но теперь и перепривыкать не надо. TypeScript явно дает больше.
              0
              Самое главное — это те кто стоят за TypeScript.
              Не удивлюсь если нативная поддержка появится скоро в браузерах.
                0
                Появится. С выходом  EcmaScript 6 :)
                  0
                  Ну Вы же сами по-моему говорили, что TypeScript это не совсем ECMA6, хотя и близок.
          +1
          Советую обратить внимание на LiveScript
            0
            Ну LiveScript все же больше функциональщина и для решения повседневных задач мало подходит.
            Да и не решает большинства проблем.

            Кстати еще одной уникальной особенностью TypeScript является, что они не только написали компилятор, но и language tools, которые позволяют добавить настоящий auto-complete в любой редактор малой кровью.
              0
              Я понял о чем вы.
              Однако добавить полноценный автокомплит в сторонний редактор, который бы работал с проектом и скопом не так просто.
              +3
              Да я обращал на него внимание, но особенного смысла переходить на него не вижу, так как по сравнению с CoffeeScript это просто еще более сладкий синтаксический сахар)
              В TypeScript же привлекают модули и типизация.
              То есть, когда я говорию о том, что неплохо бы было скрестить CoffeeScript и TypeScript, то подразумеваю кофе с типами :-)
                +1
                Ну да, тут мы ждем ES6
                  0
                  TypeScript в целом и есть реализация ES6. По крайней мере они очень тесно общаются с комитетом.
                    0
                    Есть сходсто некоторое синтаксических конструкций (классы, лямбда-выражения, деструктуризация, сплаты и пр.), но к сожалению многих вещей нет и не планируется в ближайшее время. К примеру set/get, которые уже имплементированы в некоторых форках.
                      0
                      Get/Set есть.
                      Он считается уже частью языка JavaScript, а как известно, любой JavaScript — это уже TypeScript.

                      В общем, вот.
                        –2
                        Честно говоря, лучше бы они просто сделали нормальный билдер ES6=>ES5|ES3 вместо полукостыльного полунового языка.
                          –3
                          Anders Hejlsberg достаточно опытный и уважаемый человек и не первый раз занимается инструментами для разработчиков. Думаю, пусть лучше он решает.

                          Но в свою очередь они стремятся к очень высокой совместимости с ES6

                          Другое интересно, никто не спросил про asm.js, а судя по обсуждениям, это тоже в планах.
                            +2
                            Так что теперь из-за того что он уважаемый человек я не имею права иметь своё мнение?
                            Он и решил. И, имхо, он ошибся. Тот же Коффии сейчас куда популярнее. ТайпСкриптом пользуются только редкие маргиналы.
                              +2
                              Вы торопите события. TypeScript до сих пор в preview и первый публичный релиз состоялся лишь в ноябре.

                              И да, вы имеете право иметь свое мнение. Но мнение Андерса авторитетней. Все же опыта у него побольше, согласитесь.
                                –1
                                Такие решения должны приниматься в рамках комитетов по стандартизации, а не единолично, если что.
                                  +1
                                  Судьба CoffeeScript или LiveScript разве решается в рамках комитетов по стандартизации?
                                    +2
                                    Если вы обратили внимание, то CoffeeScript очень медленно развивается в плане имплементации новых возможностей (к примеру set/get, опциональный return, перечисления через ,).
                                    Сообщество устало стучать в глухую дверь и многие перешли на LiveScript.

                                    Что же касается TypeScript, то тут все серьезней, им занимаются на более высоком уровне с привлечением высококлассных специалистов.
                                    И если TypeScript выстрелит, то избежать создания комитета по стандартизации им не удастся.
                                      +2
                                      На самом деле над TypeScript работает достаточно немного людей. И Андерс в том числе совмещает сейчас архитектора C# и занимается TypeScript.

                                      Мне видится вся ситуация вот как:
                                      В начале 2000-ых Микрософт сделали ставку на C# и .Net, для этого сманили видного архитектора из Borland и отца Delphi. Платформа получилась замечательная (особенно для enterprise рынка), была проделанна огромнейшая работа над ошибками Java. Язык вышел современный, хорошо припудренный сахаром.
                                      Но в целом платформа не стала мега-популярной (уровня php, ruby).
                                      Возможно, отчасти в этом причина в закрытости системы — закрытые исходники и лок на Windows.

                                      Сейчас же геополитика сильно меняется — платформ становится больше, Windows больше не монополия и у бизнеса есть серьезный запрос на крос-платформенные инструменты. Таковыми могут стать html5+JavaScript — пожалуй, единственная технология, которая может стать компромиссом. Но JavaScript лишен многих прелестей «серьезных» языков, особенно это сказывалось в отсутствии хороших инструментов (я лет 5 наблюдал, и даже слал баг-репорты в команду разработки Visual Studio по поводу JavaScript) и им с огромным трудом давалось написать нормальный intellisense (честное автодополнение) из-за динамичности языка.
                                      И посмотрев на все эти вызовы, возможно микрософт решил попробовать сыграть по новому и «модному» — открытые исходные коды, полная прозрачность, работа с сообществом, изначальная кросс-платформенность. Если ближайшее время это выстрелит, то нас ждет еще более бурный рост JavaScript (потому что по сути они не пытаются заменить JavaScript) и на это действительно будет кинуто гораздо больше сил.

                                      В свою очередь, еще одной положительной тенденцией видятся последние изменения в iOS SDK в JavaScriptCore — теперь можно из JavaScript вызывать нативные функции достаточно прозрачно (и вроде как наоборот).

                                      Не говоря о том, что под Windows 8 можно вообще приложения писать на html5+JS.

                                      Из всего этого выйграют все, в том числе и CoffeeScript, и LiveScript, и стандарты и даже ES6 (все же мы живем в web и знаем, что стандарты не могут идти впереди прогресса).

                                      Все же JavaScript is Assembly Language for the Web
                                        0
                                        Как вы видите себе реализацию опционального return?
                                          0
                                          В LiveScript это решили так:

                                          !(x, y) -> alert x + y
                                          

                                          Что будет транслировано в:

                                          (function(x, y){
                                            alert(x + y);
                                          });
                                          
                            0
                            Я вкурсе что get/set есть в ES 5.1, которые большинство современных движков поддерживает, речь шла о CoffeeScript, в котором такой поддержки пока нет
                              +1
                              Если я что-то не так сказал, прошу дать мне об этом знать, возможно меня не так поняли
                              0
                              Похоже я промахнулся с комментарием
                              0
                              Мне почему-то показалось, что у вас изначально было написано CoffeeScript, если это не так, прошу прощения )
                    +3
                    Очень надеюсь на то, что повышение производительности — правда. 0.8.3 в студии любил ужасно лагать даже на мелких проектах и работать с ним было невозможно.
                    Из замеченных сразу плюсов — теперь импорты работают адекватно с функциями, изменяющими прототип (sugarjs). Раньше автокомплит легко показывал несколько тысяч перегрузок в зависимости от количества включений файла, теперь всё, кажется, ок.
                      0
                      Кто-нибудь может знает, а появится ли в TypeScript arrow функции? С сохранением контекста?
                      +1
                      Хотелось бы await.
                      Пока этого нет, (Iced)CoffeeScript кажется вкуснее.
                        +1
                        Товарищи на видео (и конкретно Хейслберг) обсуждают эту область как вторую по популярности просьбу (первая — generics — выполнена). В версии 1 этой фичи точно не будет — причина в недостаточной определённости текущего драфта ECMAScript 6 в смежной области, насколько я понял: без продвижения этого драфта сгенерированный из конструкций async / await JS код будет сильно отличаться от оригинального TS, а это входит в противоречия с намереньями авторов TS.
                        –1
                        В версии 0.9.0 файл typescript.js теперь весит 2,44 МБ, что существенно больше, чем в предыдущей версии (в версии 0.8.3 он весил 1,12 МБ). Нет ничего удивительного в том, что версия для Node.js стала работать медленнее, потому что 2,44 МБ – это очень большой объем кода (даже для движка V8).
                          0
                          Да, с tsc.js та же история.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое