我的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功能仅在最新的浏览器版本中实现。即向后兼容性几乎不存在。
有可能使用ES6更好地描述其他用例,浏览器不完全支持这些用例。
简而言之,在可预见的将来,您应该以ES5为目标,直到浏览器有机会赶上。
您选择的目标取决于您支持的浏览器。看看The ES6 Compatibility Table,我们可以制定关于目标的一般指导方针。只要平台支持大于或等于TypeScript支持,我们就可以估计出我们想要定位的内容。
首先检查兼容性表中TypeScript版本的差异,我们只发现一些差异:
现在将TS的功能集与平台进行比较:
目标:ES3 - 如果你想支持:
目标:ES5 - 如果你想支持:
target:ES6(ES2015) - 如果您使用这些功能并且想要支持:
target:ES7(ES2016) - 如果您想使用这些功能并且想要支持:
target:ES2017 - 如果您想使用这些功能并且想要支持:
我将把ES2018 / ESNext作为练习留给读者,或者我将来可能会对此进行更新。说一些现代浏览器或库不支持它们的一些功能是公平的,因为它们可以是实验性的。
希望这会让您了解要定位的内容,但测试对于保证您支持所需的平台至关重要。可能有较小的功能不在兼容性表中或我错过的东西,所以一定要测试。
Evan Plaice的回答很好,但现在已经过时了(写作时差不多18个月)。兼容性表已经发生了很大变化,现在可以定位ES6(ES2015)。查看表格以了解您需要支持的浏览器。