在Angular CLI项目中使用ES6

时间:2017-05-11 15:32:11

标签: angular webpack ecmascript-6 angular-cli

我想在使用angular-cli构建的Angular 4+项目中使用ES6代码(例如集合)。这是我正在使用的tslint.json:

{
  "compilerOptions": {
    "baseUrl": "",
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["dom","es2017"],
    "mapRoot": "./",
    "module": "es6",
    "moduleResolution": "node",
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "target": "es6",
    "typeRoots": [
      "../node_modules/@types"
    ]
  }
}

请注意,目标必须是es6,因为Typescript无法将ES6代码转换为ES5。

不幸的是,angular-cli使用的webpack2似乎对UglifyJS有一个硬连线依赖,这与ES6不兼容,不太可能很快修复。我可以选择不使用ES6代码或angular-cli,但在我放弃之前,我想知道这个问题是否有合理的解决方法?

1 个答案:

答案 0 :(得分:2)

  

打字稿不能将ES6代码转换为ES5

事实并非如此。 (这并不是真的有意义,因为Typescript只是语言而且反编译是分开的。)

将构建目标设置为ES5。如果您正在使用Typescript编写,那么您可以访问这些ES6功能,因为Typescript是ECMAScript最新版本的超集(理论上)。

如果您遇到问题,可能与您的module有关。尝试使用commonjs或类似内容来访问可以转换为ES5的模块。