ES6 作为 angularjs 或 angular2 的 typescript 目标编译器选项

ES6 as the typescript target compiler option for angularjs or angular2

我的 angularjs 应用程序的编译器选项如下。如果我将目标更改为 es6,我是否应该再次使用任何其他包将 es6 转译为 es5

    {
      "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"
      ]
    }

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

*根据The ES6 Compatibility Table:

  • class

    中不受支持
    • Chrome(最新)
    • Android(最新)

注意:这只是最新的。 ES6 中的许多可提供可衡量优势的功能仅在最新的浏览器版本中实现。也就是说 backward-compatibility 实际上是不存在的。

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

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

Evan Plaice 的回答很好,但现在已经过时了(写这篇文章时已经将近 18 个月了)。兼容性 table 发生了很大变化,现在可以针对 ES6 (ES2015) 了。检查 table 您需要支持的浏览器。

您选择哪个目标取决于您支持的浏览器。查看 The ES6 Compatibility Table,我们可以制定有关目标的一般准则。只要平台支持大于或等于 TypeScript 支持,那么我们就可以预估我们要针对的是什么:

目标:ES3 - 如果要支持:

  • IE8

目标:ES5 - 如果要支持:

  • IE11
  • (iOS) 野生动物园 9
  • Opera Mini
  • Android 浏览器
  • 可能 Firefox ESR 或 Edge 14。它们实现了 ES6 的 some/most,但可能缺少一些功能。检查您是否需要所述功能或可以 polyfill/shim 它们。

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

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

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

目标 ES2018 - 如果您使用这些功能并且希望支持:

目标 ES2019 - 如果您使用这些功能并且希望支持:

目标 ES2020 - 这让我们只能用浏览器处理所有事情 post:

  • 火狐 74+
  • Chrome 80+(包括它的 Edgium 80+ 和 Operium 67+ 更名)
  • 野生动物园 13.1

希望这能让您了解目标是什么,但测试对于保证您支持所需平台至关重要。兼容性 table 中可能没有一些更小的功能或者我遗漏的东西,所以一定要测试。