我应该使用打字稿吗?或者我可以使用ES6?

时间:2015-06-12 16:08:07

标签: angularjs typescript ecmascript-6

我的日常工作是使用AngularJS的客户端开发人员。我们正在评估是否要使用TypeScript。我对typescript做了一些研究,几乎每个我需要的JavaScript包都必须有定义类型文件。我发现这不是很方便,特别是如果我想尝试新的东西而且他们没有定义它。它真的很令人沮丧。 (即使是当前的jQuery定义也会给我一些问题,如果我想使用typescript 1.5 beta)。我开始关注ES6,它看起来与TypeScript类似。我应该只使用ES6吗?另外,我听说angular 2将完全支持TypeScript,这是我应该坚持下去的一个原因吗?

2 个答案:

答案 0 :(得分:654)

ES5,ES6和TypeScript之间的决策树

  

你介意做一个构建步骤吗?

  • 是 - 使用ES5
  • 不 - 继续前进
  

您想使用类型吗?

  • 是 - 使用TypeScript
  • 否 - 使用ES6

更多细节

ES5 是您今天在浏览器中使用的JavaScript,它就是这样,并且不需要构建步骤将其转换为将在今天的浏览器中运行的内容< / p>

ES6 (也称为 ES2015 )是JavaScript的下一次迭代,但它不能在今天的浏览器中运行。有很多转发器会导出ES5以便在浏览器中运行。它仍然是一种动态的(读取:无类型)语言。

TypeScript 提供了一个可选的输入系统,同时从未来版本的JavaScript(ES6和ES7)中提取功能。

注意:很多转发器(即babel,TypeScript)将允许您使用今天JavaScript的未来版本中的功能,并导出仍将在今天的浏览器中运行的代码。

答案 1 :(得分:112)

我一直在目前的角度项目中使用Typescript大约一年半,虽然有时会出现一些定义问题然后DefinitelyTyped项目在跟上最受欢迎的图书馆的最新版本。

说过从vanilla JavaScript过渡到TS时有一定的学习曲线,你应该考虑到你和你的团队进行转换的能力。此外,如果您要使用角度1.x,您将在网上找到的大部分示例都需要您将它们从JS转换为TS,总体而言,目前使用TS和angular 1.x的资源并不多。

如果您打算使用角度2,那么有许多使用TS的示例,我认为团队将继续提供TS中的大部分文档,但您当然不必使用TS来使用角度2. / p>

ES6确实有一些很好的功能,我个人计划更熟悉它,但我不认为它是一种生产就绪的语言。主要是由于当前浏览器缺乏支持。有关详细信息,请参阅this SO答案。当然,您可以在ES6中编写代码并使用转换器将其转换为ES5,这似乎是目前最受欢迎的事情。

总体而言,我认为答案可归结为您和您的团队所熟悉的学习内容。我个人认为TS和ES6都有很好的支持和长期的期待,我更喜欢TS,因为你倾向于更快地获得语言功能,现在工具支持(在我看来)稍微好一点。