我注意到一些使用Typescript和webpack的Web项目也使用babel完成编译.例如,他们使用ts编译到ES2015,然后使用babel编译到es5.为什么不直接使用ts直接编译为es5?
如果项目中也有需要编译的js,以便他们只使用babel进行所有操作,是否是这种情况?还是我想念什么?
谢谢.
解决方法:
有一些可能的原因.
>他们使用Babel自动进行polyfill-TypeScript仅执行语法转换,使用户可以确定他们需要使用哪些运行时库(例如Promise,Symbol等).这使您可以决定这些polyfill的哪种实现最适合您,但这可能会很麻烦. Babel减轻了您的负担.这是一个权衡.
>他们需要它来进行自定义转换-TypeScript具有转换管道,但是仅当您此时使用TypeScript API时才可以访问.如果您已经在使用Babel并想开始使用TypeScript,但是已经在使用转换,这是一个合理的折衷方案.
>它是在TypeScript不支持将生成器编译到ES5时创建的(甚至在TypeScript在ES5中不支持异步/等待时将其编译回来)-TypeScript自2.1开始在ES5中支持async / await,并且在downlevelIteration标志后面支持了生成器从2.3开始.在此之前,用户经常依靠Babel来弥补这一负担,但是这里不再需要Babel.
>它是在Webpack 2之前创建的,项目使用了一种特定的模块导入方式-TypeScript具有allowSyntheticDefaultImport选项,该选项告诉TypeScript默认导入可以用于导入某些模块. Babel支持此行为,但Webpack直到Webpack 2出现为止.对于较新版本的Webpack,这里不再需要Babel.
这可能不是全部原因,但是我想到的只是一些原因.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。