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

我的日常工作是使用AngularJS的客户端开发人员。 我们正在评估,如果我们想用TypeScript去。 我对打字稿做了一些研究,几乎每个我需要的JavaScript包都必须有定义types文件。 我发现这不是很方便,特别是如果我想尝试新的东西,他们没有定义它。 真令人沮丧。 (即使目前的jQuery定义给我一些问题,如果我想使用打字稿1.5testing版)。 我开始看ES6,它看起来类似于TypeScript。 我应该用ES6吗? 另外,我听说angular2将全力支持打字稿,这是我应该留下来的一个原因吗?

在当前的angular度项目中,我一直在使用Typescript大约一年半的时间,虽然DefiniteTyped项目有时会遇到几个问题,但它们在跟上最stream行的库的最新版本方面做得非常出色。

话虽如此,当从vanilla JavaScript过渡到TS时,有一个明确的学习曲线,你应该考虑到你和你的团队进行转换的能力。 另外,如果你打算使用angular 1.x,你会发现在线的大多数例子都要求你将它们从JS转换到TS,而且现在没有太多的资源在使用TS和angular 1.x 。

如果你打算使用angular 2,那么有很多使用TS的例子,我认为团队将继续提供TS中的大部分文档,但是你当然不需要使用TS来使用angular 2。

ES6确实有一些不错的function,我个人计划对它进行更多的熟悉,但是现在我不认为它是一个可以用于生产的语言。 主要是由于目前的浏览器缺乏支持。 看到这个回答更多的细节。 当然,您可以在ES6中编写代码,并使用一个转译器将其转换为ES5,这似乎是目前stream行的事情。

总的来说,我认为答案将归结于你和你的团队所习惯的东西。 我个人认为TS和ES6都会有很好的支持和很长的期货,但是我更喜欢TS,因为你倾向于更快地获得语言特性,现在工具支持(在我看来)更好一些。

ES5,ES6和TypeScript之间的决策树

你介意有一个build设步骤?

  • 是的 – 使用ES5
  • 不 – 继续

你想使用types?

  • 是的 – 使用TypeScript
  • 否 – 使用ES6

更多细节

ES5是你现在在浏览器中使用的JavaScript,它就是这样,不需要构build步骤就可以把它转换成在今天的浏览器上运行的东西

ES6 (也被称为ES2015 )是JavaScript的下一个版本,但它不能在今天的浏览器上运行。 有相当多的转换器将导出ES5在浏览器中运行。 它仍然是一个dynamic(阅读:无types)的语言。

TypeScript提供了一个可选的input系统,同时引入了将来版本的JavaScript(ES6和ES7)的function。

注意:许多转换器(例如babel,TypeScript)将允许您使用今天JavaScript版本的function,并导出仍然可以在当前浏览器中运行的代码。