【发布时间】:2017-04-11 17:52:24
【问题描述】:
我希望能够使用 async 关键字,但我希望我的 typescript 能够编译成 es5 代码,以便我的代码可以在普通人的浏览器中运行。当我尝试在 Visual Studio 代码中使用 async 时出现此错误。
异步函数仅在面向 ECMAScript 2015 或 更高。
我认为定位es6意味着编译打字稿的输出javascript将是es6,而es6在大多数浏览器上都不起作用?
这是我的tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"lib": ["es2015", "dom"],
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": true,
"outDir":"js/app/",
"typeRoots": [
"./node_modules/@types"
]
},
"exclude": [
"node_modules",
"app/test"
]
}
我想知道 lib 字段是否可以使它工作,因为它说 "es2015" 但它没有。
我也在想也许core-js shim 使async 可用,但我只在我的index.html 中包含该 shim,如下所示:
<script src="node_modules/core-js/client/shim.min.js"></script>
所以我认为它不会使async 在编译时可用。有没有更好的导入 core-js 的方法?
如何使async 可用,但又不让我的代码无法在大多数浏览器上运行?
【问题讨论】:
-
这应该可以在 Typescript 2.1 中使用,现在很快就会实现......
-
core-js是 polyfill。async和es6目标依赖于生成器。它们不能被填充。通常 Babel 应该与 TS 一起使用,以将它们转译为 ES5。如前所述,asyncfores5目标在 2.1 开发版本中可用。
标签: angular typescript ecmascript-6 async-await