Angular 8的TS配置目标和库

时间:2019-05-30 19:07:27

标签: angular typescript configuration

首先,我有点知道我的问题将作为重复项被关闭,但到目前为止我找不到答案。

我正在基于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"
    ]
  }
}

两者都很好。

1 个答案:

答案 0 :(得分:1)

我可能错了,但我会尽力回答。

目标指定打字稿编译器将为目标ecmascript版本输出什么。

对于角度8,我认为将其设置为esnext,因为然后webpack会在您获得捆绑包之前再次对其进行编译。

然后使用新的差异加载Webpack将在es5中吐出两个版本,一个用于较旧的浏览器,一个在es2015浏览器中。

库是打字稿使您可以在编写代码时使用的所有功能。因此dom可以启用所有dom类型,而es2018可以启用该版本中的所有新功能。

Angular可以很好地为您填充语言功能,但是有时您需要添加polyfill包才能使较新的api在较旧的浏览器中工作。

我希望可以将其清除一点:)