- PVSM.RU - https://www.pvsm.ru -
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 [1], Walmart stationery [2] и наш богатый опыт с Microsoft Azure [3], в котором мы перепрыгнули за миллион строчек кода.
Наша цель в работе над TypeScript – продолжать поддерживать проекты подобного размаха и сделать его лучшим языком для масштабирования JavaScript. С версией 1.1 мы выпустили быстрый и легковесный компилятор, способный выдавать результат в четыре раза быстрее, чем предыдущий. Новый компилятор также более гибок в отношении добавления новой функциональности, чем мы непременно воспользуемся, двигаясь к версии 2.0.
Сегодня мы хотим рассказать о наших планах к второй версии. Мы приглашаем вас присоединиться к нашей странице TypeScript на GitHub [4] и помочь нам сделать TypeScript еще лучше.
Сообщество типизации JavaScript продолжает расти, мы рады наблюдать это и быть его частью. DefinitelyTyped [5] сегодня содержит более 700 .d.ts типизированных описаний для широкого набора библиотек и фреймворков и приближается к тому, чтобы преодолеть планку в 600 контрибьюторов.
Мы также видим новые проекты, вырастающие на базе работы, проделанной сообществом типизации JavaScript. Первый из таких, язык Flow от Facebook, анонсированный ранее в этом году. Он базируется на модулях, как фундаментальном строительном блоке для приложений и добавляет к ним богатый типизированный интерфейс и совместимость с .d.ts. Второй проект, называемый AtScript, был недавно анонсирован командой Angular в Google. Он базируется на аннотациях типов, похожих на TypeScript, и добавляет аннотации мета-данных и проверки при выполнении.
Команда TypeScript работает с обеими командами (Flow и AtScript) с тем, чтобы быть уверенными, что ресурсы, уже созданные сообществом типизации JavaScript, могут быть использованы и в этих инструментах. Все проекты могут очень многому научиться друг у друга, мы смотрим в будущее, чтобы работать вместе для создания наилучших инструментов для сообщества JavaScript. В долгосрочной перспективе, мы также стремимся к тому, чтобы наилучшие возможности этих инструментов вошли также в ECMAScript, стандарт, стоящий за JavaScript.
Наш следующий релиз будет TypeScript 1.3, он будет включать новый переписанный языковой сервис, позволяющий сделать процесс разработки в редакторах кода более быстрым и гладким. Он также будет первым релизом, в котором мы начнем стандартизацию API компилятора, так что инструменты смогут на него полностью полагаться. Как часть этого релиза, мы также покажем превью новой версии интеграции в Visual Studio, которая впоследствии станет ее частью.
С точки зрения языка, мы добавляем две новые возможности: protected [6] и кортежей типов (tuple) [7]. Модификатор защищенного доступа довольно долго был одной из самых часто запрашиваемых возможностей, мы рады добавить в TypeScript дополнительные объектно-ориентированные шаблоны. С кортежами типов мы начинаем расширять систему типов, чтобы синхронизироваться с практиками, которые будут базироваться на возможностях грядущего ECMAScript 6. Если конкретнее, то это позволит безопасное с точки зрения типов использование деструктуризации массивов, рассматриваемых как кортежи.
Возможно, вы спрашиваете: «А где же TypeScript 1.2?» Мы рассчитывали использовать его как релиза для стабилизации предыдущей версии, но версия 1.1. оказалось достаточно стабильной, чтобы разработчики смогли на нее перейти. Это позволило нам перейти к завершению работ над языковым сервисом и добавлению новых возможностей раньше, чем мы изначально планировали.
В релизе 1.4 мы хотим сфокусироваться на дальнейшем развитии языка. Первые новые возможности уже доступны в мастер-верке на GitHub. Они включают объединения типов [8] и использование 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, возникавшие при работе со смешанными массивами.
Смотря в будущее на релиз 2.0, мы сфокусированы на двух целях в дополнение к основной цели предоставить наилучшие инструменты для JavaScript-разработки. Первая – это состыковать с ES6. Синхронизация с ES6 позволит TypeScript стать надмножеством следующей версии JavaScript, открывая возможность работать над новыми шаблонами и практиками создания кода, включая деструктурирование, строковые шаблоны, обещания, итераторы и др. в дополнение к тем возможностям, которые TypeScript уже поддерживает, например, классы и лямбда-функции. Второе – мы также работаем с командами Flow и Angular, чтобы убедиться, что TypeScript – это наилучший язык для работы с широким набором библиотек, включая декларативные фреймфорки вроде предстоящего релиза Angular 2.0.
Впереди много работы, но мы уже хорошо продвигаемся по нашему плану. Вы можете попробовать некоторые из упомянутых выше возможностей, взяв свежую версию исходников в нашем репозитарии TypeScript на GitHub [4]. Мы приняли для себя стиль GitHub для выкладывания спецификаций вместе с использование pull-запросов. Это позволит вам отслеживать новые возможности по мере их разработки, и мы также будем рады услышать ваши отзывы.
Автор: kichik
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/72952
Ссылки в тексте:
[1] Mozilla Shumway: https://github.com/mozilla/shumway
[2] Walmart stationery: http://www.walmartstationery.com/estore/
[3] Microsoft Azure: http://azure.microsoft.com/
[4] TypeScript на GitHub: https://github.com/Microsoft/TypeScript/
[5] DefinitelyTyped: https://github.com/borisyankov/DefinitelyTyped
[6] protected: https://github.com/Microsoft/TypeScript/pull/688
[7] кортежей типов (tuple): https://github.com/Microsoft/TypeScript/pull/428
[8] объединения типов: https://github.com/Microsoft/TypeScript/pull/824
[9] Язык TypeScript: http://www.typescriptlang.org/
[10] Загрузить: http://aka.ms/getvsrus
[11] Источник: http://habrahabr.ru/post/241744/
Нажмите здесь для печати.