company_banner

TypeScript и путь к версии 2.0

http://blogs.msdn.com/b/typescript/archive/2014/10/22/typescript-and-the-road-to-2-0.aspx
  • Перевод
var t: [number, string] = [1, "hello"];
t = [];                 // Error
t = [1];                // Error
t = [2, "test"];        // Ok
t = ["test", 2];        // Error
t = [2, "test", true];  // Ok

Когда мы выпустили TypeScript 1.0 ранее в этом году, мы были сфокусированы на том, чтобы создать язык, который поможет разработчикам действительно масштабировать их проекты на JavaScript. Было довольно увлекательно наблюдать, что люди делали с ним, включая 170000 строчек кода в Mozilla Shumway, Walmart stationery и наш богатый опыт с Microsoft Azure, в котором мы перепрыгнули за миллион строчек кода.

Наша цель в работе над TypeScript – продолжать поддерживать проекты подобного размаха и сделать его лучшим языком для масштабирования JavaScript. С версией 1.1 мы выпустили быстрый и легковесный компилятор, способный выдавать результат в четыре раза быстрее, чем предыдущий. Новый компилятор также более гибок в отношении добавления новой функциональности, чем мы непременно воспользуемся, двигаясь к версии 2.0.

Сегодня мы хотим рассказать о наших планах к второй версии. Мы приглашаем вас присоединиться к нашей странице TypeScript на GitHub и помочь нам сделать TypeScript еще лучше.

Рост сообщества типизации JavaScript


Сообщество типизации JavaScript продолжает расти, мы рады наблюдать это и быть его частью. DefinitelyTyped сегодня содержит более 700 .d.ts типизированных описаний для широкого набора библиотек и фреймворков и приближается к тому, чтобы преодолеть планку в 600 контрибьюторов.

Мы также видим новые проекты, вырастающие на базе работы, проделанной сообществом типизации JavaScript. Первый из таких, язык Flow от Facebook, анонсированный ранее в этом году. Он базируется на модулях, как фундаментальном строительном блоке для приложений и добавляет к ним богатый типизированный интерфейс и совместимость с .d.ts. Второй проект, называемый AtScript, был недавно анонсирован командой Angular в Google. Он базируется на аннотациях типов, похожих на TypeScript, и добавляет аннотации мета-данных и проверки при выполнении.

Команда TypeScript работает с обеими командами (Flow и AtScript) с тем, чтобы быть уверенными, что ресурсы, уже созданные сообществом типизации JavaScript, могут быть использованы и в этих инструментах. Все проекты могут очень многому научиться друг у друга, мы смотрим в будущее, чтобы работать вместе для создания наилучших инструментов для сообщества JavaScript. В долгосрочной перспективе, мы также стремимся к тому, чтобы наилучшие возможности этих инструментов вошли также в ECMAScript, стандарт, стоящий за JavaScript.

Дорожная карта


TypeScript 1.3


Наш следующий релиз будет TypeScript 1.3, он будет включать новый переписанный языковой сервис, позволяющий сделать процесс разработки в редакторах кода более быстрым и гладким. Он также будет первым релизом, в котором мы начнем стандартизацию API компилятора, так что инструменты смогут на него полностью полагаться. Как часть этого релиза, мы также покажем превью новой версии интеграции в Visual Studio, которая впоследствии станет ее частью.

С точки зрения языка, мы добавляем две новые возможности: protected и кортежей типов (tuple). Модификатор защищенного доступа довольно долго был одной из самых часто запрашиваемых возможностей, мы рады добавить в TypeScript дополнительные объектно-ориентированные шаблоны. С кортежами типов мы начинаем расширять систему типов, чтобы синхронизироваться с практиками, которые будут базироваться на возможностях грядущего ECMAScript 6. Если конкретнее, то это позволит безопасное с точки зрения типов использование деструктуризации массивов, рассматриваемых как кортежи.

Возможно, вы спрашиваете: «А где же TypeScript 1.2?» Мы рассчитывали использовать его как релиза для стабилизации предыдущей версии, но версия 1.1. оказалось достаточно стабильной, чтобы разработчики смогли на нее перейти. Это позволило нам перейти к завершению работ над языковым сервисом и добавлению новых возможностей раньше, чем мы изначально планировали.

TypeScript 1.4


В релизе 1.4 мы хотим сфокусироваться на дальнейшем развитии языка. Первые новые возможности уже доступны в мастер-верке на GitHub. Они включают объединения типов и использование typeof в if-блоках для уточнения типов. Обе возможности показаны в примере ниже:

function createCustomer(name: { firstName: string; lastName: string } | string) {
    if (typeof name === "string") {
        // Because of the typeof check in the if, we know name has type string
        return { fullName: name };
    }
    else {
        // Since it's not a string, we know name has 
        // type { firstName: string; lastName: string }
        return { fullName: name.firstName + " " + name.lastName };
    }
} 

// Both customers have type { fullName: string }
var customer = createCustomer("John Smith"); 
var customer2 = createCustomer({ firstName: "Samuel", lastName: "Jones" });

Обе возможности вместе позволяют использовать более естественные шаблоны при работе с JavaScript-кодом. Объединения типов, позволяя более точно описывать типы с множественными вариантами, также помогают смягчить некоторые болевые точки ранних версий TypeScript, возникавшие при работе со смешанными массивами.

От TypeScript 1.5 к TypeScript 2.0


Смотря в будущее на релиз 2.0, мы сфокусированы на двух целях в дополнение к основной цели предоставить наилучшие инструменты для JavaScript-разработки. Первая – это состыковать с ES6. Синхронизация с ES6 позволит TypeScript стать надмножеством следующей версии JavaScript, открывая возможность работать над новыми шаблонами и практиками создания кода, включая деструктурирование, строковые шаблоны, обещания, итераторы и др. в дополнение к тем возможностям, которые TypeScript уже поддерживает, например, классы и лямбда-функции. Второе – мы также работаем с командами Flow и Angular, чтобы убедиться, что TypeScript – это наилучший язык для работы с широким набором библиотек, включая декларативные фреймфорки вроде предстоящего релиза Angular 2.0.

Заглядывая в будущее


Впереди много работы, но мы уже хорошо продвигаемся по нашему плану. Вы можете попробовать некоторые из упомянутых выше возможностей, взяв свежую версию исходников в нашем репозитарии TypeScript на GitHub. Мы приняли для себя стиль GitHub для выкладывания спецификаций вместе с использование pull-запросов. Это позволит вам отслеживать новые возможности по мере их разработки, и мы также будем рады услышать ваши отзывы.

Полезные ссылки


Метки:
Microsoft 387,41
Microsoft — мировой лидер в области ПО и ИТ-услуг
Поделиться публикацией
Комментарии 21
  • +4
    Сначала, наверно, надо добавить в IE все хорошее, что уже есть в самом Javascript.
    • +3
      1. Например?
      2. За планами по IE можно легко следить тут status.modern.ie/
      • –2
        1. Например перейти на SpiderMonkey
      • +2
        При чём тут IE и TypeScript?
        Разные продукты, разные команды.
        ТайпСкрипт вполне себе неплох при разработке под нодой, например.
        • +1
          А там уже отладчик для node.js в Visual Studio работает?
          Чтобы можно было бряки прямо в ts-коде ставить, как это в для браузерного ts сделано?
          • +1
            Работает, но не всегда работает мапинг. То есть иногда брейкпоинт останавливаеться в нужном месте, но в файле .js
            • 0
              Это был баг — уже починили.
              • 0
                А не подскажите, пофиксен ли в этой версии VS? prntscr.com/518hmg
                • 0
                  Судя по дате, это какой-то древний дев билд. Последний баг с брейкпоинтами в TS был относительно недавно (сообщение от пользователя в октябре), и пофикшен в Beta 3, который вышел вчера.
      • –3
        Всё здорово, но, мне кажется, уж очень медленно…
        • –2
          В смысле, медленно развивается.
        • +2
          Отличный проект. Так держать. Уже с 0.9.0 используем в продакшене.
          • +1
            Аналогично. Причем уже и с Node.JS. Для сложных JS проектов TypeScript must have.
          • +6
            Какой-то машинный перевод!)
            • +1
              Реквистирую linq / array comprehensions и existential operator… :)

              PS В typescript всё хорошо, до того момента когда нажмешь ctrl+shift+b
              • 0
                И что же происходит?
                • 0
                  Судя по всему, в вопросах, не касающихся типизации, языковые фичи будут браться as is из ES6.
                  • 0
                    Микрософт как всегда в… Когда гугл и мозила внедряет языковые фитчи из ES7, мелгомягие в своей передовой технологии опираются на почти кандидата…
                    • 0
                      Извините, но мне кажется, вы тут сильно передергиваете и искажаете суть вещей. Google и Mozilla (кстати, не только они) не внедряют фичи из ES7 (такого стандарта нет, есть только ранний его набросок), а экспериментируют и вносят некоторые предложения касательно будущего стандарта. Что-то из их экспериментов в него может войти, а что-то нет.

                      Касательно версий и т.п., TypeScript 2.0 должен стать надмножеством ES6.0, добавляя сверху в том числе те вещи, которые могут войти в ES7.

                      Однако в целом, тут самое главное — это то, что TypeScript можно использовать уже сегодня, с любыми современными браузерами, поддерживающими ES5. Аналогично, кстати, и с передовой технологией Google — AtScript компилируется тоже в ES5, а не какой-то там неведомый ES7.
                • 0
                  Всей душой болею за развитие языка, пользуюсь еще с 0.7, очень много времени экономит при отладке и позволяет избежать огромного числа ошибок.

                  Хотелось бы больше синтаксического сахара, как в кофескрипте.
                  • 0
                    Они включают объединения типов и использование typeof в if-блоках для уточнения типов.
                    Напоминает Ceylon.

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

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