Я заметил что-то странное при использовании 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() { ... }
}
Это не имеет смысла для меня. Почему последний синтаксис работает нормально, а первый явно отказывается компилировать? Есть ли тонкая разница с этими двумя синтаксисами, которые я пропускаю?
Звучит скорее как недостаток в отчетах об ошибках в TypeScript. Оба фрагмента выводят файлы JavaScript с генераторами ES6, поэтому ни один из них не работает на ES5. –
@MattiasBuelens Если двигатель должен был строго ограничиваться ES5, это не сработает. Однако многие современные браузеры, а также Node.js имеют хотя бы частичную поддержку ES6. В моем случае это было очень полезно, поскольку таргетинг на ES6 означал бы, что будут использоваться и другие (неподдерживаемые) вещи. – Thorarin
Они перенесли его на отметку 2.1. –