我正在开发一个可以从 Typescript 中受益的大型代码库,但是由于最终世界将转向 ES6,我应该将开发转向 Traceur 吗?
我不想更改 Typescript 实现以针对 ES6(何时准备好),所以我现在的感觉是继续使用 Traceur。
任何人都可以建议吗?
我正在开发一个可以从 Typescript 中受益的大型代码库,但是由于最终世界将转向 ES6,我应该将开发转向 Traceur 吗?
我不想更改 Typescript 实现以针对 ES6(何时准备好),所以我现在的感觉是继续使用 Traceur。
任何人都可以建议吗?
我绝对不同意 TypeScript 和 Traceur 如此不同的观点,TypeScript 是带有类型的 ES5,而 Traceur 只是关于 ES6。
一方面,有一个 ES6 兼容的 TypeScript 2.0正在进行中。另一方面,Traceur 中有几个在文档中标记为实验性的功能,即types 和 annotations。事实证明,类型与 TypeScript 类型非常相似,而注解与 ES6 和 TypeScript 无关。所以 Traceur 更像是 ES6 并且已经有了它的名字:AtScript。是的,我们有另一种语言扩展 :-)
Miško Hevery 演示文稿中有一张漂亮的幻灯片,展示了这里的实际情况,在 TypeScript 2.0 发布后完全有效:
所以无论你决定使用什么,重要的是要注意:它们是子集,你可以编写 ES5/ES6 JS 并且它将是有效的 TypeScript 代码,你可以编写 TypeScript 并且它将是有效的 AtScript 代码。
回到你的问题,我会给出一个谦虚的建议,从 ES6 开始使用 Traceur 并关闭实验性功能(它现在非常稳定)并根据需要进行扩展,因为这不是一个激进的决定,不会让你陷入困境并留出空间在未来移动。
UPD:在 2015 年初,我还建议关注 6to5 项目(重命名为Babel)作为 Traceur 的替代方案。它运行速度非常快,并提供了一些不错的功能,例如生成代码的可读性以及对 node.js 和构建系统的更好支持。
TypeScript 和 Traceur 具有完全不同的目标,并且在您尝试比较它们的方式上没有可比性。
TypeScript 是 EcmaScript 的超集,增加了严格的类型。它包含 ES6 的一些特性,但其主要目标是为语言添加严格类型(同时与 ES6 保持一致),而不是提供 ES6 支持。
相比之下,Traceur 是一个未来的 EcmaScript 到当前的 EcmaScript 编译器。它不会为下一版本的 EcmaScript 提出的语言添加任何内容。
如果您今天只想编写 EcmaScript 6,请使用 Traceur。如果你想要可选的严格类型以及随之而来的所有好处,以及一些 ES6 特性,请使用 TypeScript。
仅供参考,正在开发的 typescript 的下一个版本(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 的超集,除了 TypeScript 已经支持的功能(例如类和 lambda 函数)之外,还为使用解构、字符串模板、承诺、迭代器等新代码模式开辟了道路。我们还与 Flow 和 Angular 团队合作,以确保 TypeScript 是使用更广泛的库的最佳语言,包括即将发布的 Angular 2.0 等声明性框架。
对于大型系统,我肯定会推荐使用 typescript。
当您有一个团队一起工作时,typescript 将为您提供具有 es6 兼容性(基于 microsoft 路线图)的现代计算机语言的所有好处,但具有严格的打字和代码完成优势。
Traceur 和 Typescript 转译具有非常相似的功能,各有利弊。
我认为要更深入地回答、分析和比较的主要问题是:“谁是它的支持者?” 和“他们每个人的历史是什么?”。
Q1:嗯,这两家公司都是大型且信誉良好的公司,在技术和劳动力方面进行了大量投资,为他们的转译提供了未来。谷歌落后于 Traceur,微软落后于 Typescript。
Q2.1:Google 一直是开源框架的坚定支持者,例如 Chromium(Google Chrome 的开源浏览器基础)和数以千计的免费 API,几乎都基于开放标准。Traceur 遵循同样的逻辑,采用 ECMAScript 6 规范的指导方针,对其进行预测并确保其在未来版本中的兼容性。
Q2.2:微软有包含标准并将其扩展为专有的历史,在其平台上造成对客户的依赖,并且不尊重其他市场参与者的标准化共同愿景。Typescript 的主要目标是使市场上的其他编译器与您的 JScript.NET 编译器的语法和功能兼容,而不是与 ECMAScript 6 兼容。任何提及 ECMA 都只是“蚂蚁的糖”。
Typescript 的实时类型解析和高级代码完成对于小型项目来说是一个相当大的优势,但大型项目需要在架构定义期间做出正确的决定,否则整个项目可能会因编译器过时或停止和不符合标准而受到损害,取决于唯一的供应商。
然而,ECMAScript 6 的许多特性只是在 Firefox 33 和 Chrome 38 当前版本(2014-10)上实现。
我肯定会推荐走 ES6 路线。
对于其他遇到此问题的人,请查看 tagtree 关于 ES6 功能的视频。
要查看模板字符串、箭头语法和解构,请查看这个免费的 tagtree 教程截屏视频,无需注册。