引导一个新的Angular 11应用程序将生成以下tsconfig.json
文件:
{
"compileOnSave": false,
"compilerOptions": {
... // Options not relevant for this question.
"target": "es2015",
"module": "es2020",
"lib": [
"es2018",
"dom"
]
}
它还会生成仅启用/未注释zone.js
的polyfills.ts
文件。
我的问题是:既然我们编译为es2015
,但使用es2018
类型定义(例如async iterables
、promise.finally
等),如果没有提供相关的polyfills,这怎么可能是安全的?为什么Angular 11CLI不使用lib
的es2015
?
发布于 2020-12-11 19:37:34
角度多边形填充将自动生成为polyfills-es5.js
。此文件中包含angular内部工作所需的多边形填充。如果您的代码使用的特性不是angular使用的特性的一部分,那么您需要将其添加到polyfills.ts
中。
因为目标是es2015,typescript会自动转换一些es2018特性,比如async
。
因为es2015
是es2018
的一个子集(我相信),所以它会自动包含在lib中。
旁注:如果你使用es2018
作为target
,angular会在编译时给出警告,因为zone.js不能捕获原生async/await
。如果您在任何地方都使用OnPush
,这不是问题。
https://stackoverflow.com/questions/65250383
复制相似问题