Angular 2: Построенный на TypeScript

Original author: Jonathan Turner
  • Translation
Мы рады представить результат долгомесячного партнерства с командой Angular.

Это партнерство было очень продуктивным и одарило нас полезным опытом, а так же в рамках этого сотрудничества, мы рады объявить что Angular 2 с сего момента будет построен на TypeScript. Мы с нетерпением ожидаем того что-бы увидеть, что будут способны делать люди с этими новыми инструментами и продолжать работу с командой Angular для того что бы улучшить аспекты использования продукта, разработчиками Angular.


Первыми плодами данного сотрудничества станет выход в свет TypeScript 1.5.

Мы работали с командой Angular для разработки набора нового функционала, который поможет вам разрабатывать более чистый код при работе с динамическими библиотеками, как Angular 2, включая новый способ аннотации объявления классов с помощью метаданных. Библиотеки и разработчики приложений смогут использовать эти аннотации метаданных для чистого разделения кода и информации о коде, такие как сведения о конфигурации или проверки условной компиляции.

Мы так же добавили возможность извлечения информации о типе во время выполнения. В режиме активации, это позволит разработчикам реализовать простую интроспекцию типов. Для проверки корректности кода с дополнительными проверками во время выполнения. Это так же позволит библиотекам, таким как Angular использовать информацию о типе для установки внедрения зависимостей на основе самих типов.

TodoMVC для Angular 2 на TypeScript


В ng-conf, мы просматриваем эту работу, показывая пример TodoMVC, основанный на TodoMVC Дэвида Иста. Вы можете попробовать этот пример сами. Если вы новичок в TypeScript вы так же можете изучить TypeScript через нашу интерактивную площадку.

Мы бы хотели услышать ваше мнение.

image
Автозаполнение TypeScript в Sublime 3 для Angular 2

Мы с нетерпением ожидаем выпуска бета версии TypeScript 1.5 в ближайшие недели, а вместе с этим роста поддержки TypeScript-а инструментами разработки для включения больших стилей разработки и сред. Мы так же хотели бы выразить огромную благодарность Браду, Игору, Miško из команды Angular за их партнерство. Отдельная благодарность Иегуде Кацу, который помог нам в разработке аннотаций и предложении декоратора, которое помогло нам реализовать данную задачу.
Share post

Comments 52

    +14
    А AtScript все?
      +12
      <irony>Вы еще Dart вспомните:)</irony>
        –2
        А он тут причём? Dart живее всех живых, а AtScript больше с нами нет.
          +1
          Да, я только вчера читал-читал да так и не дочитал три огромных статьи на Хабре о Dart: одна про то, как писать юнит-тесты, вторая про S.O.L.I.D. в приложении к Dart и еще одна про какой-то хитрый edge-case со строками.
            –1
            Ну вот тут можно глянуть как он жив
              0
              Вы что-то не в ту степь пошли. Контекст был такой — AtScript больше не разрабатывается. Следуя контексту, Dart разрабатывается, выходят новые версии, разработчики пишут библиотеки. AtScript мёртв, Dart жив. Не стоит заводить холивар про использование.
                +1
                Dart живее всех живых

                RLY? OK!
          0
          Да, встречаются упоминания, что разработка AtScript прекращена, а все фичи будут перенесены в TypeScript.
            +2
              0
              Ему на смену пришел SoundScript.
                +1
                Вспоминается пикча о стандартах, но прикреплять не хочу)
              +1
              Видны большие синтаксические изменения TypeScript 1.5 в плане модулей. Это позволит более тонкую интеграцию с ангуляровскими компонентами? Замечательно! А где можно почитать про изменения в 1.5?
              +9
              предвкушаю противостояние Angular2 + TypeScript vs ReactJS(flux) + ES6-7.
                0
                Дай Бог что бы это было плодотворное сотрудничество ведущее к синергии. Ведь никто же не ожидал TS для Angular 2.
                  +1
                  Да ладно, в доке по AtScript это был как возможный вариант событий, нет?
                  –2
                  И где-то в сторонке стоит и похихикивает CoffeeScript + KnockoutJS…
                    +3
                    побайндивает
                    0
                  0
                  Народ, а кто нибудь умудрился заставить sublime 3 нормально дополнять?
                  При использовании github.com/Railk/T3S вообще невозможно, саблайм виснет и на винде и на маке.
                  Со вторым саблаймом получается, но он не показывает нормально overloaded методы, когда там несколько сигнатур показывает верхнюю и говорит что ещё столько то оверлоадов, а посмотреть их я не нашёл как.
                    0
                    tss и tsc установлены?
                      0
                      Естественно, второй саблайм то работает и билдит ts нормально, а третий виснет.
                      +1
                        0
                        Спасибо, это намного лучше. Жаль новые механизмы хабра не дают голосовать за карму людей у которых нет постов.
                      +1
                      Дилетантские вопросы:
                      1. Если кратко typoscrip(не вики данные, а практический уровень) это попытка акцента на Java в названии JavaScript?
                      2. Каков уровень вхождения по сравнению с angular 1.* и на сколько субъективно он изменился/измениться в связке TypeScript+Angular2?
                      3. Какую цель преследуют создатели и те из разработчиков кто поддерживает данное решение в вопросе перехода на TypoScript?
                        +3
                        TypoScript это скорее уход в сторону быдлокода. Если не поняли, «typo» — опечатка.

                        1. Скорее не в сторону Java а больше в сторону серьезных решений. В частности описание типов позволит реализовать нормальный статический анализ. Для больших приложений это довольно полезная штука, да и автокомплит в IDE улучшится.
                        2. Различия будут более чем приличные. С идеологической точки зрения — не так сильно, но архитектурно — придется по сути все полностью переосмыслять. Весь фреймворк разделен на отдельные компоненты что бы снизить монолитность. Возьмем watchtower.js который будет использоваться как компонент реализующий дата биндинг. Скажем $digest циклы планируется запускать только как фэлбэк для браузеров не поддерживающих Object.observer (с автозапуском через zone.js или аналогичные штуки) и все это будет происходить в автоматическом режиме. Работа с директивами так же существенно должна быть переработана. Вместо своей системы модулей планировалось использовать ES6 модули и т.д. Новый компонент реализующий DI и т.д. Сервис $http должен быть выделен в отдельный компонент для организации persistance layer. Ну и поскольку все модульное — можно смешивать это все просто как набор библиотек.
                        3. Цель — сделать фреймворк серьезнее, избавиться от болячек первых версий и тд.
                          +1
                          Извиняюсь наз «typo», просто много лет назад плотно работал с typo3, а в нем писал на на ts(typoscript) — руки помнят.

                          «Скорее не в сторону Java а больше в сторону серьезных решений.»
                          «Серьезных» решений предостаточно на js под любым соусом. Разве что сам разработчик хочет добавить себе лично серьезности из-за собственной не уверенности.

                          «Для больших приложений это довольно полезная штука, да и автокомплит в IDE улучшится.»
                          Полезная, но часто избыточная.
                          Всегда возникает вопрос в чем мерить «серьезность» в сложности продукта или в его востребованности?
                          Есть такое крайне серьезное решение InterSystems Caché.

                          2. Благодарю за столь подробный ответ, про различия, а что скажите про порог вхождения?

                          3. Благодарю за ответ.
                            0
                            Вот тут описание опыта переезда на TS: Typescript — история адаптации к TFS
                              0
                              Благодарю.
                              0
                              У каждого свои меры «серьезности». Обычно все же меряют сложностью, количеством вьюшек или контроллеров, объемом кода и т.д. В этом случае очень удобно помимо тестов иметь еще статический анализ, который предупредит о опечатках и прочих мелочах до прогона тестов и уменьшит футпринт по времени (особенно если тесты выполняются больше 10 минут).

                              Что до оверхэда, использовать тайп хинтинг или нет — решать вам.

                              По порогу вхождения сказать ничего не могу. Думаю что чуть сложнее в самом начале но кривая обучения будет более плавной.
                                0
                                «Обычно все же меряют сложностью, количеством вьюшек или контроллеров, объемом кода и т.д»
                                Это все же не «обычно», а такое же как прочие мерила, но в данном случае оно сопоставимо с тем когда человеку оплачивается не итог работы-результат, а количество строк и размер «пакета». Количество не значит качество, а сложность не значит достижение поставленных целей. Сами разработчики и проектировщики делают проект «сложным», в большинстве случаев, не оправданном сложным, мое личное мнение — плохое мерило.

                                «В этом случае очень удобно помимо тестов иметь еще статический анализ, который предупредит о опечатках и прочих мелочах до прогона тестов и уменьшит футпринт по времени (особенно если тесты выполняются больше 10 минут).»
                                Согласен.

                                «Думаю что чуть сложнее в самом начале но кривая обучения будет более плавной.»
                                Вот этот момент очень важный, плавность данной кривой крайне положительный момент, спасибо.

                              0
                              Вот такое (про отличия angular2 от angular) и нужно писать в посте! Спасибо за полезную информацию. А где-то ещё можно почитать?
                                +1
                                Вообще-то большая часть компонентов Angular2 описана в design docs которые доступны на почитать все. Какие-то пилятся уже давно (watchtowerjs например), какие-то только начали пилить… все есть в группе angular на гитхабе. Вообще наверное стоит подождать чуть чуть более свежих данных. Пока все что есть — то что рассказывали на ng-conf последнем.
                            0
                            Кому интересно, как работают аннотации в TypeScript 1.5:
                            @AnnotationA
                            @AnnotationB("wow")
                            class C { }
                            
                            Превращается в:
                            var C = (...);
                            AnnotationA(C);
                            AnnotationB("wow")(C);
                            
                              0
                              Жаль, что не C = AnnotationA©, как в питоне.
                                0
                                Ого, а слона-то я и не заметил! Действительно, вроде там так:
                                var C = (...);
                                C = AnnotationA(C);
                                C = AnnotationB("wow")(C);
                                
                                  0
                                  Ага, иначе как-то странно.
                              +3
                              Вот сайт посвященный Angular 2.0 angular.io
                                –1
                                R.I.P AngularJS

                                Это было очень круто!
                                  –1
                                  не, ну как R.I.P. просто понесло ребят. а идея-то мож и сохраниться
                                    +1
                                    Ну почему же покойся с миром, ведь для любителей первой ветки AngularJS есть Angular Light. Внешне сходства есть.
                                      0
                                      Время покажет, RIP или нет. Исходники-то открыты, никто не мешает форкать и поддерживать.
                                        0
                                        Почему вы настолько уверены что курс который взяли разработчики Angular не правильный? Вам не кажется что это… преждевременное и крайне сомнительное утверждение?
                                          0
                                          Не увидел тут ссылки на доклад с ng-conf, в котором рассказывается о преимуществах которые дает TypeScript и все такое: youtu.be/lluTcocfRAM?t=3h46m55s
                                            +1
                                            This video is private.

                                            Sorry about that.
                                          0
                                          TypeScript дает ощутимые преимущества во время разработки, а в результате все равно компилируется в обычный JS и использоваться может ровно так же, как и до этого.

                                          Но зато вместе с TypeScript приходят и .d.ts файлы (см. проект DefinitelyTyped), которые даже при работе со скомпилированной JS версией в нормальных редакторах дают прекрасный автокомплит.
                                          +1
                                          А что теперь будет с Aurelia? Автор кажется сильно напирал на его AtScript'овость. Учитывая наличие Angular 2 основанном на TypeScript у автора Aurelia большая проблема, если он конечно еще не слился с вышеназванными.
                                            0
                                            Нашелся статус twitter.com/EisenbergEffect/status/573523270823075840 — дай бог авторы Angular 2 и Aurelia объединят усилия и выпустят что-то одно и замечательное.
                                              0
                                              Я что-то пропустил? Всегда думал что второй ануглар писался на дарте.
                                                +1
                                                На Dart писался Angular dart. Некоторые вещи мигрировали в Angular 2 как порт на JS но не более.

                                            Only users with full accounts can post comments. Log in, please.