异步功能仅在定位ECMAScript 2015或更高版本时可用

Ben*_*ins 9 async-await typescript ecmascript-6 angular

我希望能够使用async关键字,但我希望我的typescript编译成es5代码,以便我的代码可以在普通人浏览器中运行.当我尝试async在visual studio代码中使用时,我收到此错误.

异步功能仅在定位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"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想知道该lib领域是否可以使它工作,因为它说,"es2015"但它没有.

我也在想也许core-js垫片async可用,但我只在这里包含垫片index.html:

<script src="node_modules/core-js/client/shim.min.js"></script>

所以我不认为它async在编译时可用.有没有更好的方法来导入core-js?

如何使async我的代码无法在大多数浏览器上运行?

wun*_*uno 11

ECMAScript6 大多数主流浏览器都支持.

正如@loganfsmyth对此答案的评论所述,

请记住,"大多数主流浏览器"仍然只能覆盖一小部分用户群.

火狐

来自Safari的网站,

ES6完全支持ECMAScript 2015标准,也称为ES6,将这一主要的JavaScript演变带到了macOS和iOS上的Safari.

你将不得不改变,

"target": "es5",
Run Code Online (Sandbox Code Playgroud)

"target": "es6",
Run Code Online (Sandbox Code Playgroud)

ES7目标中的TypeScript 1.7 async/await支持(Node v4 +)TypeScript现在支持对ES6生成器具有本机支持的引擎的异步函数,例如Node v4及更高版本.异步函数以async关键字为前缀; await挂起执行,直到满足异步函数返回promise,并从返回的Promise中解除值.

  • 请记住,"大多数主流浏览器"仍然只能覆盖一小部分用户群. (4认同)