首先,我有点知道我的问题将作为重复项被关闭,但到目前为止我找不到答案。
我正在基于Angular 8构建一个角度应用程序
我应该使用哪个目标和库,它们之间有什么关系? tsconfig的lib和target是否应为同一版本?有什么好处?
例如,我不明白与这样的配置有什么区别:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2015",
"dom"
]
}
}
对此:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2016",
"dom"
]
}
}
两者都很好。
答案 0 :(得分:1)
我可能错了,但我会尽力回答。
目标指定打字稿编译器将为目标ecmascript版本输出什么。
对于角度8,我认为将其设置为esnext,因为然后webpack会在您获得捆绑包之前再次对其进行编译。
然后使用新的差异加载Webpack将在es5中吐出两个版本,一个用于较旧的浏览器,一个在es2015浏览器中。
库是打字稿使您可以在编写代码时使用的所有功能。因此dom可以启用所有dom类型,而es2018可以启用该版本中的所有新功能。
Angular可以很好地为您填充语言功能,但是有时您需要添加polyfill包才能使较新的api在较旧的浏览器中工作。
我希望可以将其清除一点:)