我应该使用typescript吗?或者我可以直接使用ES6?

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

124889 次浏览

我已经在我目前的angular项目中使用Typescript大约一年半了,虽然时不时会有一些定义问题,但DefinitelyTyped项目在跟上大多数流行库的最新版本方面做得非常出色。

说到这里,从普通JavaScript过渡到TS有一个明确的学习曲线,你应该考虑到你和你的团队完成这个过渡的能力。如果你要用角1。你在网上找到的大多数例子都需要你把它们从JS翻译成TS,总的来说,没有很多关于使用TS和angular 1的资源。在一起。

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

ES6确实有一些不错的特性,我个人也打算更加熟悉它,但我现在还不认为它是一种可以投入生产的语言。主要是由于当前浏览器缺乏支持。当然,你可以在ES6中编写代码,然后使用转译器将其转换到ES5,这似乎是目前最流行的做法。

总的来说,我认为答案可以归结为你和你的团队乐于学习什么。我个人认为TS和ES6都会有很好的支持和很长的未来,但我更喜欢TS,因为你倾向于更快地获得语言特性,现在工具支持(在我看来)更好一些。

ES5, ES6和TypeScript之间的决策树

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

  • 是- 使用ES5
  • 不,继续

你想使用类型吗?

  • 是- 使用打印稿
  • No - 使用ES6

更多的细节

ES5是你知道并在今天的浏览器中使用的JavaScript,它就是它,不需要构建步骤将其转换为可以在今天的浏览器中运行的东西

ES6(也称为ES2015)是JavaScript的下一个迭代,但它不能在今天的浏览器中运行。有相当多的编译器将导出ES5以便在浏览器中运行。它仍然是一种动态(无类型)语言。

打印稿提供了一个可选的类型系统,同时引入了JavaScript未来版本(ES6和ES7)的特性。

注意:很多编译器(如babel, TypeScript)允许你使用当前JavaScript未来版本的特性,并导出仍然可以在当前浏览器中运行的代码。