我希望能够使用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
垫片可能async
可用,但我只在我的index.html
中加入了这样的垫片:
<script src="node_modules/core-js/client/shim.min.js"></script>
所以我不认为它在编译时可以使async
可用。有没有更好的方法来导入core-js?
如何使async
可用,但我的代码无法在大多数浏览器上运行?
答案 0 :(得分:11)
ECMAScript6
在大多数主流浏览器中都受支持。
正如@loganfsmyth对此答案的评论所述,
请记住&#34;大多数主流浏览器&#34;仍然只能覆盖一个 很小比例的用户群。
ES6 ECMAScript 2015标准,也称为ES6,完全是 支持,将这个主要的JavaScript演变带到了macOS上的Safari 和iOS。
你将不得不改变,
"target": "es5",
要
"target": "es6",
TypeScript 1.7异步/等待ES6目标支持(Node v4 +) TypeScript现在支持具有的引擎的异步函数 对ES6生成器的本机支持,例如节点v4及更高版本。 异步函数以async关键字为前缀;等待 暂停执行,直到异步函数返回promise 已完成并从已返回的Promise中解除其值。