为什么我会一起使用TypeScript和Babel?

Kra*_*ken 16 javascript automation build typescript babeljs

我们在NPM和NodeJS上运行内部编写的构建自动化.我完全熟悉自动化一些转换步骤以使TypeScript和Babel协同工作.我只是想知道它会带来什么好处.有人能告诉我吗?看来,由于TS增加了对ES6的支持,你并不真正需要Babel.看起来可能的一件事是Babel更快地支持新功能,但TS目前似乎并不太落后.

我错过了什么吗?

Lek*_*ath 12

在我opition您使用transpile打字稿代码ES6 typescript,然后将其重新transpile到es5/es3使用babel在大多数JavaScript运行时间使用.现在因为typescript编译器为你提供es6 javascript,你tree-shaking只能支持es6模块.在摇晃之后,您es6 javascript现在可以将其编译es5为能够在大多数javascript运行时使用.

基本上

1)将ts编译为js-es6

tsconfig

{
  "compilerOptions": {
    "target": "es6"
  }
}
Run Code Online (Sandbox Code Playgroud)

2)es6 javascript中的树摇或死代码消除

树摇动 使用汇总等

3)透明到es5 javascript能够在大多数javascript运行时运行

.babelrc

{
  "presets": [
    "es-2015",
    "stage-2"
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • [TypeScript Compiler](https://www.typescriptlang.org/docs/handbook/compiler-options.html) 也允许指定 `--target ES5`,在这种情况下需要 babel 吗? (7认同)
  • @SandeepKumar Babel不需要将打字稿代码编译为javascript。但是有时您可能想使用ES规范中尚未批准的功能。例如:在ES6 / ES-2015中,您不能定义类属性。即`class User {role ='administrator'}`是无效的,但是如果您想现在在`ES6`中使用此功能,则需要`babel`及其名为`transform-class-properties`的插件。 (2认同)
  • @SandeepKumar 在上面的例子中,我在 `.babelrc` 中使用了 `stage-2` 预设,这意味着我们能够使用当前在 `stage-2` 但不是 `stage-2` 一部分的 `ES` 规范的所有提议功能ES-2015` 规范。 (2认同)