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

时间:2014-05-14 15:17:42

标签: typescript traceur

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

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

有人可以提供建议吗?

6 个答案:

答案 0 :(得分:30)

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

一方面,ES6兼容TypeScript 2.0 in progress。另一方面,Traceur中有一些功能在文档中标记为实验,即types and annotations。事实证明,类型与TypeScript类型非常相似,而注释与ES6和TypeScript无关。所以Traceur不仅仅是ES6,而且已有名称:AtScript。是的,我们有另一种语言扩展: - )

来自Miško Hevery presentation的精彩幻灯片显示了这里真正发生的事情,一旦TypeScript 2.0发布就完全有效:

AtScript and TypeScript as ES6 extensions

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

回到你的问题,我会建议从ES6开始使用Traceur关闭实验性功能(现在它非常稳定)并根据需要进行扩展,因为事实并非如此激进的决定,不会锁定你并​​留下未来的空间。

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

答案 1 :(得分:12)

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

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

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

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

答案 2 :(得分:9)

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

此处更新了帖子:

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的超集,打开   使用新的代码模式(如解构,字符串)的方式   模板,promises,迭代器以及更多功能   TypeScript已经支持,例如类和lambda函数。   我们还与Flow和Angular团队合作以确保这一点   TypeScript是处理更广泛范围的最佳语言   库,包括即将发布的Angular等声明框架   2.0版本。

答案 3 :(得分:0)

我肯定会建议你去ES6路线。

对于任何登陆此问题的人,请查看有关ES6功能的tagtree视频。

要查看模板字符串箭头语法解构,请查看此free tagtree tutorial screencast,无需注册。

答案 4 :(得分:0)

对于大型系统我肯定会建议使用打字稿。

当你有一个团队一起工作时,打字稿将为你提供现代计算机语言的所有好处 与es6兼容(基于微软路线图),但具有严格的输入和代码完成优势。

答案 5 :(得分:0)

Traceur和Typescript都有非常相似的特征,有一些优点和缺点。

我认为,要更深入地回答,分析和比较的主要问题是:“谁是它的支持者?”和“他们每个人的历史是什么?”。

第一季度:嗯,这两家公司都是大型且信誉良好的公司,在技术,劳动力方面投入了大量资金,以便为其未来提供支持。谷歌是Traceur的幕后推手,微软支持Typescript。

Q2.1:谷歌作为开源框架的强大支持者有着悠久的历史,例如Chromium(谷歌Chrome的开源浏览器基础)和数千种可用的免费API,几乎都基于开放标准。 Traceur遵循同样的逻辑,采用ECMAScript 6规范的指导方针,预测它并确保其在未来版本中的兼容性。

Q2.2:微软拥有包含标准并将其扩展为专有的历史,在其平台上创造了对客户的依赖,而不尊重其他市场参与者的标准化共同愿景。 Typescript的主要目标是将市场上的其他编译器与JScript.NET编译器的语法和功能相兼容,而不是与ECMAScript 6兼容。任何提及ECMA的只是“蚂蚁糖”。

对于小型项目,实时类型解析和Typescript的高级代码完成是一个相当大的优势,但是较大的项目需要在架构定义期间做出正确的决定,否则整个项目可能会被编译器过时或中断而受到损害。超出标准,取决于独特的供应商。

然而,ECMAScript 6的许多功能仅在Firefox 33和Chrome 38当前版本(2014-10)中实现。

http://kangax.github.io/compat-table/es6/