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

问题描述 投票:4回答:3

我的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"
      ]
    }
angularjs ecmascript-6 ecmascript-5
3个回答
3
投票

目标ES5目前是基准要求

*根据The ES6 Compatibility Table

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

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

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

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


6
投票

您选择的目标取决于您支持的浏览器。看看The ES6 Compatibility Table,我们可以制定关于目标的一般指导方针。只要平台支持大于或等于TypeScript支持,我们就可以估计出我们想要定位的内容。

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

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

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

  • IE8 - 不支持ES5

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

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

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

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

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

我将把ES2018 / ESNext作为练习留给读者,或者我将来可能会对此进行更新。说一些现代浏览器或库不支持它们的一些功能是公平的,因为它们可以是实验性的。

希望这会让您了解要定位的内容,但测试对于保证您支持所需的平台至关重要。可能有较小的功能不在兼容性表中或我错过的东西,所以一定要测试。


3
投票

Evan Plaice的回答很好,但现在已经过时了(写作时差不多18个月)。兼容性表已经发生了很大变化,现在可以定位ES6(ES2015)。查看表格以了解您需要支持的浏览器。

© www.soinside.com 2019 - 2024. All rights reserved.