Как вы знаете, вчера вечером состоялся релиз Visual Studio 2015. Одновременно Microsoft представила финальную версию TypeScript 1.5, включив его в состав новой Visual Studio. Также его можно скачать отдельно для предыдущих версий VS или же установить с помощью npm. Под катом — краткий список что интересного в новом релизе.Частичная поддержка синтаксиса ES6
Microsoft хочет сделать TypeScript обратно совместимым с ES6, и в каждом новом релизе планомерно добавляет синтаксис нового стандарта. Версия 1.5 особо богата нововведениями: ES6-синтаксис для модулей, destructuring, оператор троеточия, итерация с помощью for...of, символы, computed properties, поддержка let/const и шаблонизация строк. Шаблонизация строк, Карл!
Улучшения системы модулей
Кроме поддержки ES6 синтаксиса для модулей, добавлена компиляция в два новых формата загрузки модулей: SystemJS и UMD. Вместе с уже поддерживаемыми CommonJS и AMD это дает возможность выбрать для создаваемого кода один из четырех вариантов загрузки модулей.
// math.ts export function add(x, y) { return x + y } export function subtract(x, y) { return x – y } export default function multiply(x, y) { return x * y } // myFile.ts import {add, subtract} from "math"; import times from "math"; var result = times(add(2, 3), subtract(5, 3));
��акже команда разработчиков переименовала internal modules в «namespaces», так что «typescript module» и «typescript external module» теперь одно и то же. Говорят, новые разработчики жаловались и путались.
Конфигурационный файл tsconfig.json
Позволяет задать список файлов для компиляции и настройки компилятора.
{ "compilerOptions": { "module": "commonjs", "noImplicitAny": true, "removeComments": true, "preserveConstEnums": true, "out": "../../built/local/tsc.js", "sourceMap": true }, "files": [ "core.ts", "sys.ts", "types.ts", "scanner.ts" ] }
ES7 Декораторы
Стандарт ES7 стабилизируется еще не скоро, но в TypeScript уже можно использовать новый синтаксис декораторов, правда в экспериментальном режиме:
import {Component, View, NgFor, bootstrap} from "angular2/angular2"; import {loadFile} from "audioFile"; import {displayAudioFile} from "displayAudio"; @Component({selector: 'file-list'}) @View({template: ` <select id="fileSelect" size="5"> <option *ng-for="#item of items; #i = index" [selected]="selected === item"(click)="updateSelection()">{{ item }}</option> </select>`, directives: [NgFor] }) class MyDisplay { items: string[]; constructor() { this.items = ["item1", "item2"]; } updateSelection() { … } }