Microsoft — мировой лидер в области ПО и ИТ-услуг
533,18
рейтинг
28 октября 2014 в 14:42

Разработка → TypeScript и путь к версии 2.0 перевод

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-запросов. Это позволит вам отслеживать новые возможности по мере их разработки, и мы также будем рады услышать ваши отзывы.

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


Автор: @kichik Jonathan Turner
Microsoft
рейтинг 533,18
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.

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

Самое читаемое Разработка