Вместе с Visual Studio 2015 состоялся релиз TypeScript 1.5

    Как вы знаете, вчера вечером состоялся релиз 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() { … }
    }
    
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 13

      0
      Еще появилась поддержка arrow functions без скобок, если тело функции содержит только одно выражение.
      То, что раньше нужно было писать так:

      (singleParam) => { return expression; }
      


      теперь можно так:

      singleParam => expression
      
        0
        Спасибо, дописал.
          +1
          Мне кажется, это не стоит упоминания. Они стремятся быть суперсетом ES6, а это часть стандарта. Кстати, подробнее список изменений 1.5 можно посмотреть в roadmap, а все, что уже поддерживается в Kangax ES6.
            0
            Не, интересная штука. Это именно то, что важно для разработчиков. Я, например, это пропустил, когда читал roadmap. А штука сильно повышает читаемость кода.
            0
            Еще, если аргумент один, но у него указан тип, то таки, к сожалению, надо брать его в скобки.
            +1
            Это было с самого начала.
              0
              Хм, возможно это у меня IntellijIDEA раньше не понимала такой синтаксис. Если да, прошу прощения, за то, что ввел в заблуждение.
                0
                ReSharper тоже, к сожалению, много чего не понимает. Но разработчикам тулзов проще/дешевле/интереснее писать свои велосипеды, чем использовать стандартные сервисы компилятора. :(
                  +1
                  В ReSharper мы поддерживали синтаксис `() => e` (и конечно `() => { }`) с самого начала поддержки TypeScript, потому что он был в 1.0. Даже недокументированный синтаксис `function() => e` хотели уже поддержать, но его дропнули до релиза.

                  Разработчиком тулзов сложнее/дороже писать половину компилятора и справляться с расхождениями, но ни у кого не возникает почему-то мыслей, что компиляторы:

                  1)… не всегда обладают необходимым для IDE функционалом (зачем компилятору хранить в AST вайтспейс и комментарии? зачем компилятору уметь API для модификаций AST и их трансляции обратно в текст? Зачем компилятору уметь быстро искать использования членов типов в других файлах? Зачем компилятору уметь переименовывать эти использования?).
                  2)… написаны на каком-нибудь языке, на котором _НЕ НАПИСАН_ UI и ядро IDE. Это вообще никого не парит, я смотрю, будто от компилятора так мало информации надо и такой тривиальный протокол общения, что ничего не стоит сделать интероп. Ага ага
                  3)… во время своего развития просто удаляют какие-то ставшими obsolete ошибками или предупредлениями, а вот от IDE хотят работу с разными версиями языка и нам приходится мейнтейнить все предыдущие версии языка
                  4)… не всегда существует! Как писать поддержку JavaScript тогда, о какие «стандартные сервисы»?

                  Никто почему-то не видит плюсов того, что все поддержки языков в IDE написаны на одном языке с использованием очень похожих концепций, что IDE не зависят от breaking changes в API и релизных циклов компиляторов, что некоторые вещи можно сделать лучше чем они сделаны в компиляторах и так далее.

                  Я могу дальше продолжать, но пользователям все равно виднее, эх :)
                    0
                    Можете не повторяться, ваши доводы я уже читал, их понял, но конечный продукт из-за этого лучше не стал.

                    1. Roslyn это не спасло от вашего игнорирования.
                    2. Сервисы компилятора написаны на TS и как-то интегрируются со студией. А помните SCSS дополнение, подсвечивающее код с помощью Ruby компилятора?
                    3. Снепшоты — не самый плохой вариант.

                    А пользователям действительно виднее. Потому что сейчас поддержка TS (да даже JS) очень посредственная. Я уж не говорю про производительность, редактировать JS/CSS/XML/HTML/AS*X/TS на ноутбуке с включенным решарпером просто невозможно. На режим no implicit any, я так понял, вы окончательно забили и реализовывать не собираетесь. Вайтспейсы в AST вам не помогают не сжирать строки при любом рефакторинге типа introduce variable, extract method и др.

                    Вчера я переключил проект в TS 1.5 и посмотрел что получилось. Решарпер поставил новый рекорд плотности ложных ошибок! Ранее было примерно 1 ошибка на 500 строк (это если не использовать protected, который решарпер тоже не понимает — но спасибо за обещанный фикс в 9.2). Теперь у меня 17 ошибок на 212 строк! Потратил час времени, сделал вам 445645.
            0
            Как вы знаете, вчера вечером состоялся релиз Visual Studio 2015

            А я даже и не знал:) На хабре еще вроде нет обзора фич новой Студии?
              0
              Я подозреваю, что XaocCPS уже пишет :). Даже не буду пытаться его опередить.
              0
              Descruction сделали, ждем pattern matching.

              Only users with full accounts can post comments. Log in, please.