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

в 11:42, , рубрики: javascript, TypeScript, Блог компании Microsoft, Веб-разработка
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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js