2016-06-05 2 views
3

Я заметил что-то странное при использовании TypeScript 1.8. Я нацелен на ES5, и я пытался использовать async/wait. Я знаю, что это поддерживается на roadmap for 2.0, но, похоже, частично работает уже?Асинхронные функции, предназначенные для ES5

Например, это не компилируется:

module MyModule { 
    async function myFunction() { ... } 
} 

Ошибка error TS1311: Async functions are only available when targeting ECMAScript 6 and higher. Довольно ясно, верно?

Однако это делает компиляции, и, кажется, работает нормально:

module MyModule { 
    myFunction = async function() { ... } 
} 

Это не имеет смысла для меня. Почему последний синтаксис работает нормально, а первый явно отказывается компилировать? Есть ли тонкая разница с этими двумя синтаксисами, которые я пропускаю?

+1

Звучит скорее как недостаток в отчетах об ошибках в TypeScript. Оба фрагмента выводят файлы JavaScript с генераторами ES6, поэтому ни один из них не работает на ES5. –

+0

@MattiasBuelens Если двигатель должен был строго ограничиваться ES5, это не сработает. Однако многие современные браузеры, а также Node.js имеют хотя бы частичную поддержку ES6. В моем случае это было очень полезно, поскольку таргетинг на ES6 означал бы, что будут использоваться и другие (неподдерживаемые) вещи. – Thorarin

+1

Они перенесли его на отметку 2.1. –

ответ

Смежные вопросы