ES6作为angularjs或angular2的打字稿目标编译器选项

won*_*rld 4 ecmascript-5 angularjs ecmascript-6

我的angularjs应用程序的编译器选项如下。我应该使用其它软件包,transpile ES6ES5如果我更改了目标再次ES6

    {
      "compilerOptions": {
        "target": "es5", // Change this to es6
        "module": "commonjs",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false,
        "outDir": "./wwwroot/app/"
      },
      "exclude": [
        "node_modules",
        "wwwroot"
      ]
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*ych 7

您选择哪个目标取决于您支持的浏览器。查看ES6兼容性表,我们可以针对目标对象制定一般准则。只要平台支持大于或等于TypeScript支持,那么我们就可以估算我们想要的目标。

首先在兼容性表中检查TypeScript版本的差异,我们仅发现一些差异:

现在将TS的功能集与平台进行比较:

目标:ES3-如果您想支持:

  • IE8-不支持ES5

目标:ES5-如果您想支持:

  • IE11-不支持ES6
  • (iOS)Safari 9-不支持ES6
  • Opera Mini-不支持ES6
  • Android浏览器-不支持ES6
  • 节点4-不支持ES6
  • 可能是 Firefox ESR或Edge14。它们实现了ES6的部分/大部分功能,但可能缺少一些功能。检查您是否需要所述功能或可以填充/填充它们。

目标:ES6(ES2015) -如果您使用这些功能并且要支持:

目标:ES7(ES2016) -如果您想使用这些功能并且要支持:

目标:ES2017-如果您想使用这些功能并且要支持:

我将把ES2018 / ESNext留给读者练习,或者将来我会更新。可以肯定地说,某些现代浏览器或库不支持某些功能,因为它们可能是试验性的。

希望这可以使您了解目标对象,但是测试对于确保您支持所需平台至关重要。兼容性表中可能没有更小的功能,或者我错过了某些功能,因此请务必进行测试。


Eva*_*ice 3

目前以 ES5 为目标是基准要求

*根据ES6 兼容性表

  • class不支持

    • 铬(最新)
    • 安卓(最新)

注意:这只是最新的。许多可提供可衡量优势的 ES6 功能仅在最新的浏览器版本中实现。即向后兼容性实际上是不存在的。

可能还有其他用例可以使用 ES6 更好地描述,但浏览器并不完全支持。

简而言之,在可预见的未来,您应该以 ES5为目标,直到浏览器有机会迎头赶上。