我不想改变Typescript的实现以便支持ES6(当它准备就绪时),所以我现在倾向于选择Traceur。
请问有什么建议吗?
我绝对不同意 TypeScript 和 Traceur 相差很大的观点,TypeScript 是带有类型的 ES5,而 Traceur 则是关于 ES6 的。
一方面,有一个兼容 ES6 的 TypeScript 2.0 正在进行中。另一方面,Traceur 中有几个在文档中标记为实验性的功能,即 类型和注释。结果发现,类型与 TypeScript 类型非常相似,而注释则与 ES6 和 TypeScript 都无关。因此,Traceur 更多地只是 ES6,已经有了一个名称:AtScript。是的,我们又有了另一个语言扩展 :-)
这里有一张来自Miško Hevery的演讲的幻灯片,它展示了实际发生的事情,当TypeScript 2.0发布后,这张幻灯片将完全有效。function testFunc(a, b) { console.log(a); } testFunc('hello'); /* 错误 */ testFunc('hello', 'goodbye', 'go away'); /* 错误 */
- bradw2kTypeScript和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的超集,打开了使用新代码模式(如解构、字符串模板、Promise、迭代器等)的道路,除了TypeScript已经支持的特性,如类和lambda函数等。我们还与Flow和Angular团队合作,确保TypeScript是处理更广泛的库的最佳语言,包括声明性框架,如即将推出的Angular 2.0版本。
Traceur和Typescript的转译功能非常相似,各有优缺点。
我认为需要更深入地回答、分析和比较的主要问题是:“它们的支持者是谁?”和“它们的历史是什么?”
Q1:嗯,两家公司都是大型知名企业,在技术方面投入巨大,拥有强大的员工队伍来推动他们的转译工具。Traceur由Google支持,而Typescript则由Microsoft支持。
Q2.1:Google一直以来都是开源框架的坚定支持者,例如Chromium(Google Chrome浏览器的开源基础)和成千上万个可用的免费API,几乎全部基于开放标准。Traceur遵循这一逻辑,采用ECMAScript 6规范的指南,预测未来修订并确保其兼容性。
Q2.2:Microsoft一直以来都是将标准包含在自己的平台中并扩展它们的公司,从而使客户对其平台产生依赖,并不尊重其他市场参与者共享标准化的愿景。Typescript的主要目标是将市场上其他编译器与其JScript.NET编译器的语法和特性兼容,而不是与ECMAScript 6兼容。任何提到ECMA的都只是“蚂蚁的糖”。
Typescript的实时输入解析和高级代码完成对于小型项目来说是一个相当大的优势,但是对于大型项目来说,在架构定义过程中需要做出正确的决策,否则整个项目可能会受到编译器过时或停用以及不符合标准的影响,这取决于唯一供应商。
然而,ECMAScript 6的许多功能只在Firefox 33和Chrome 38当前版本(2014-10)上实现。
var x: {a:number} = {a: 0}; var y: {a:Object} = x; y.a = "boo"; x.a * 2
。 - Andreas Rossberg