编译目标设置为 'ES3' 或 'ES5' 的 TypeScript 内部

Compiling TypeScript with target set to 'ES3' or 'ES5' Internal

刚刚进入 typescript 世界,并尝试使用 webpack ts-loader 和 babel-loader 将 typescript 编译和转译为 ES5。 但是后来我看到tsc中有一个可以针对'ES5'的编译器选项,我觉得'what am I using babel-loader for then?'

所以我的问题是:

  1. 当 typescript 编译器以目标为目标时内部发生了什么 ES5?
  2. 我可以单独使用 ts-loader 和 tsconfig 目标选项来实现我的目标吗?
  3. 如果可以,哪种方式更好? (ts-loader 到 ES6,然后 babel-loader 到 ES5,或者目标选项设置为 ES5 的 ts-loader)
  4. 在这两种情况下,tree-shaking(webpack2 功能)会发生什么情况?

What is happening internally when the typescript compiler targets ES5?

带你 TS / ES 代码并将其转换为 ES5(就像 babel)。

Can I use ts-loader alone with tsconfig target option to achieve my goal?

是的。这就是我所做的。

If so, which way is better?

有偏见的意见:https://medium.com/@basarat/typescript-won-a4e0dfde4b08

What happens with tree-shaking(webpack2 feature) in both cases?

同样的事情。未使用的导出将被删除。