Typescript 针对ES5的异步函数

Typescript 针对ES5的异步函数,typescript,async-await,Typescript,Async Await,我在使用TypeScript 1.8时注意到一些奇怪的事情。我的目标是ES5,我试图使用async/await。我知道有人支持这一点,但它似乎已经部分起作用了 例如,这不会编译: module MyModule { async function myFunction() { ... } } 错误是错误TS1311:异步函数仅在针对ECMAScript 6及更高版本时可用。非常清楚,对吗 但是,这确实可以编译,而且似乎工作得很好: module MyModule { myFunc

我在使用TypeScript 1.8时注意到一些奇怪的事情。我的目标是ES5,我试图使用async/await。我知道有人支持这一点,但它似乎已经部分起作用了

例如,这不会编译:

module MyModule {
    async function myFunction() { ... }
}
错误是
错误TS1311:异步函数仅在针对ECMAScript 6及更高版本时可用。
非常清楚,对吗

但是,这确实可以编译,而且似乎工作得很好:

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

这对我来说毫无意义。为什么后一种语法可以很好地工作,而前一种语法明确地拒绝编译?这两种语法是否有细微的区别,我没有提到?

它们还不支持作为es5目标。不过很快就会发生

更多 我在这里提到了这个事实:

找到了奥斯卡的评论,我尝试了他提到的方式:

TypeScript=>ES6=>Babel=>ES5


大口喝-typescript@2.14.1(使用typescript@1.8.10),然后大口吞下-babel@6.1.2,结果是:除了IE8,chrome、firefox、Safari、IE Edge都可以正常工作。

听起来更像是TypeScript错误报告中的一个缺陷。这两个代码段都使用ES6生成器输出JavaScript文件,因此它们实际上都不能在ES5上工作。@MattiasBuelens如果引擎严格限制自己使用ES5,它就不能工作。不过,许多现代浏览器以及Node.js至少部分支持ES6。在我的例子中,它非常有用,因为以ES6为目标意味着也将使用其他(不支持的)东西。他们将其移动到了2.1里程碑。多久后?:)