我应该使用Traceur而不是Typescript来定位ES5,但是要为ES6做好准备

Nik*_*kos 18 typescript traceur

我正在开发一个可以从Typescript中受益的大型代码库,但是由于最终世界将转向ES6,我应该将开发引向Traceur吗?

我不想改变Typescript实现以定位ES6(准备就绪时),所以我现在的感觉是继续使用Traceur.

任何人都可以建议吗?

Tha*_*ant 30

我绝对不同意TypeScript和Traceur如此不同的观点,TypeScript是带有类型的ES5,Traceur就是ES6.

一方面,正在进行 ES6兼容的TypeScript 2.0 .另一方面,Traceur中有一些功能在文档中标记为实验,即类型和注释.事实证明,类型与TypeScript类型非常相似,而注释与ES6和TypeScript无关.所以Traceur更像是ES6而且已经有了名字:AtScript.是的,我们有另一种语言扩展:-)

MiškoHevery演示文稿中有一个很好的幻灯片显示了这里真正发生的事情,一旦TypeScript 2.0发布就完全有效:

AtScript和TypeScript作为ES6扩展

所以无论您决定使用什么,重要的是要注意:它们是子集,您可以编写ES5/ES6 JS并且它将是有效的TypeScript代码,您可以编写TypeScript并且它将是有效的AtScript代码.

回到你的问题,我会给出一个简单的建议,使用Traceur 开始使用Traceur并关闭实验功能(现在它非常稳定)并根据需要进行扩展,因为这不是一个如此激进的决定,不会锁定你并留下未来的空间.

UPD:在2015年初,我还建议关注6to5项目(更名为Babel)作为Traceur的替代品.它移动速度非常快,并提供了一些很好的功能,例如生成的代码的可读性以及对node.js和构建系统的更好支持.

  • UPD2:AtScript和Typescript正在合并,正如[ng-conf 2015](https://twitter.com/ngconf/status/573521849780305920)所宣布的那样,你可以通过Typescript获得好处:)同时也会使用Typescript创建Angular 2意味着它将被另一个大项目采用 (9认同)
  • UPD3:6to5项目非常值得关注,但最近更名为[Babel](https://babeljs.io) (6认同)

C S*_*ver 12

TypeScript和Traceur具有完全不同的目标,并且在您尝试比较它们的方式上无法比较.

TypeScript是EcmaScript的超集,它增加了严格的输入.它包含ES6的一些功能,但其主要目标是为语言添加严格的输入(与ES6对齐),而不是提供ES6支持.

相比之下,Traceur是当前EcmaScript编译器的未来EcmaScript.它不会为尚未为下一版本的EcmaScript提出的语言添加任何内容.

如果您今天只想编写EcmaScript 6,请使用Traceur.如果您想要可选的严格键入以及随之而来的所有好处,再加上一些ES6功能,请使用TypeScript.


bas*_*rat 9

仅供参考,开发中的下一版本(2.0)打字稿专注于ES6兼容性:http://typescript.codeplex.com/wikipage?title = Routemap

这里更新了帖子:

http://blogs.msdn.com/b/typescript/archive/2014/10/22/typescript-and-the-road-to-2-0.aspx

从TypeScript 1.5到TypeScript 2.0

在我们关注2.0版本时,除了为JavaScript开发带来优秀工具的主要目标之外,我们还关注两个目标.首先是与ES6保持一致.与ES6对齐允许TypeScript成为下一个JavaScript的超集,除了TypeScript已经支持的功能(如类和lambda函数)之外,还为处理新的代码模式(如解构,字符串模板,promises,迭代器等)开辟了道路.我们还与Flow和Angular团队合作,确保TypeScript是处理更广泛库的最佳语言,包括即将发布的Angular 2.0版本等声明性框架.