Выпущен TypeScript 0.9


TypeScript, замена Microsoft JavaScript для Microsoft, достиг версии 0.9, важной для включения Generics и переработанного компилятора.

TypeScript был впервые выпущен в октябре 2012 года как язык, помогающий разработчикам Microsoft писать большие приложения для Интернета, сервера и рабочего стола Windows.

Это проект с открытым исходным кодом, но в нем активно участвует персонал Microsoft, в том числе Андерс Хейлсберг, который до TypeScript был известен благодаря C #.

Объявление MSDN о новой бета-версии объясняет, что Generics была наиболее востребованной функцией среди пользователей исходной версии 0.8, и заявляет:

«дженерики позволяют фиксировать взаимосвязи между входами и выходами в API, обеспечивая более богатую проверку типов для лучшего отчета об ошибках и инструментов. Например, универсальные шаблоны позволяют набирать функцию Array # map из JavaScript, чтобы связать тип элемента массива с параметром с функция обратного вызова («T» ниже) и тип возвращаемого значения функции обратного вызова с типом возврата «карта» («U» ниже).

interface Array {

// …

карта (callbackfn: (значение: T, индекс: число, массив: T []) => U): U []; // …}

var array: Array = [«Джон», «Сэм», «Джордж»]; var lengths = array.map ((val, idx, arr) => val.length);

Идея состоит в том, что типы переменных, используемых как T и U, могут быть проверены — даже если это связано с выводом типа, потому что программист не объявил тип.

Конечно, если вы не применяете строгую типизацию, как в оригинальном JavaScript, вам не нужно изобретать обобщения, чтобы все усложнять. Слишком легко рассматривать TypeScript как «решающий» проблемы с JavaScript, но на самом деле он только перемещает JavaScript в направлении таких языков, как C #. Если вы не хотите идти в этом направлении, это становится бессмысленным упражнением.

Хотя дженерики — большая новая функция, есть и другие, о которых стоит упомянуть. В частности, перегрузка функций по типу констант. Например, если вы вызываете createElement с общей строкой, результат будет иметь тип HTMLElement, наиболее общий тип. Если строка — «холст», то можно предположить, что возвращаемый тип — HTMLCanvasElement и так далее. Опять же, дело в том, что он позволяет проверять тип во время компиляции, чтобы убедиться, что вы, скажем, не используете HTMLCanvasElement в качестве HTMLDivElement. Опять же, если вы думаете, что JavaScript и утиная типизация достаточно хороши, это не впечатлит.

У нас также есть полностью типизированные перечисления:

enum Color {красный, синий, зеленый} var myColor = Color.red; console.log (Цвет [myColor]);

а сопоставление объявлений позволяет вам делать то, что легко в JavaScript, но с проверкой типа:

function readInput (separator = readInput.defaultSeparator) {// чтение ввода} module readInput {export var defaultSeparator = «:»; }

Помимо синтаксиса и сахара проверки типов, компилятор был улучшен, так что он лучше масштабируется и обеспечивает лучшую инкрементную компиляцию. К сожалению, это улучшенное качество стоит немного, а компилятор 0.9 работает немного медленнее.

В этом видео Андерс Хейлсберг, создатель нового языка, Стив Лукко, соавтор TypeScript и ответственный за его исходный компилятор, и Люк Хобан, который также активно участвовал в проекте, обсуждают отзывы первых последователей, новые функции в этом выпуске , начиная с обобщений TypeScript и того, чем они отличаются от шаблонов других языков.

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


Добавить комментарий