我注意到一些使用typescript和webpack的web项目也使用babel来完成编译。例如,他们使用ts编译为ES2015,然后使用babel编译为es5。为什么不直接使用ts编译成es5?
是否该项目还有js需要编译,所以他们只是使用babel的一切?或者我错过了什么?
感谢。
答案 0 :(得分:4)
有几个可能的原因。
Promise
,{ {1}}等)。这允许您决定这些polyfill的哪种实现最适合您,但这可能会很痛苦。巴别塔让你无后顾之忧。这是一种权衡。Symbol
/ async
时返回) - TypeScript具有自2.1以来在ES5中支持await
/ async
,并且自2.3以来支持await
标志后面的生成器。在此之前,用户经常依靠Babel来获取松弛,但此处不再需要Babel。downlevelIteration
选项,告诉TypeScript默认导入可用于导入某些模块。 Babel支持这种行为,但是在Webpack 2问世之前,Webpack并没有。对于较新版本的Webpack,不再需要使用Babel。这可能不是一套完整的理由,但是我能想到的是一些原因。
答案 1 :(得分:0)
为什么不直接使用ts编译成es5?
这就是我的工作。
将两者结合使用没有任何缺陷。既然都这样做:
(non js OR js) => standard js
你可以做到
(non js OR js) => standard js => es5
TS -> JS -babel> ES5
或Babel -> JS -ts> ES5
人们这样做的原因是各种语法支持:https://kangax.github.io/compat-table/
如上所述。我不使用Babel as I TypeSafety is big for me and don't need to use syntax that isn't yet type safe
答案 2 :(得分:0)
打字稿是从ES2016开始的演变。 Typescript帮助c#和java后台的开发人员成为使用各种工具的javascript开发人员。 Visual Studio代码,WebStorm,Sublime等。
为什么:我们不能单独使用Typescript将ts转换为ES5 使用TypeScript编译为ES5并不像Babel那样完整。某些现代语言功能(如Array.prototype.find)无法使用TypeScript编译为ES5。
以下是可以帮助您的链接:https://www.stackchief.com/blog/TypeScript%20or%20Babel%3F