My daily job is client developer using AngularJS. We are evaluating if we want to go with TypeScript. I did some research on typescript and almost every JavaScript package I need must have definition type files. I found that is not very convenient, especially if I would like to try something new and they don't have the definition for it. Its really frustrating. (Even the current jQuery definition gives me some problems if I want to use typescript 1.5 beta). I started looking at ES6 and it looks similar to TypeScript. Should I just use ES6 instead? Also, I heard angular 2 will have full support for TypeScript, will that be one reason I should stay with it?
当前回答
我在我现在的angular项目中使用Typescript已经有一年半的时间了,虽然偶尔会有一些定义问题,但DefinitelyTyped项目在跟上大多数流行库的最新版本方面做得非常出色。
说到这里,从普通JavaScript过渡到TS有一个明确的学习曲线,你应该考虑到你和你的团队完成这个过渡的能力。如果你要用角1。你在网上找到的大多数例子都需要你把它们从JS翻译成TS,总的来说,没有很多关于使用TS和angular 1的资源。在一起。
如果你打算使用angular 2,有很多使用TS的例子,我认为团队会继续提供TS中的大部分文档,但你当然不必使用TS来使用angular 2。
ES6确实有一些不错的特性,我个人也打算更加熟悉它,但我现在还不认为它是一种可以投入生产的语言。主要是由于当前浏览器缺乏支持。当然,你可以在ES6中编写代码,然后使用转译器将其转换到ES5,这似乎是目前最流行的做法。
总的来说,我认为答案可以归结为你和你的团队乐于学习什么。我个人认为TS和ES6都会有很好的支持和很长的未来,但我更喜欢TS,因为你倾向于更快地获得语言特性,现在工具支持(在我看来)更好一些。
其他回答
我在我现在的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 不,继续
你想使用类型吗?
是-使用TypeScript 不-使用ES6
更多的细节
ES5是你所知道的并在今天的浏览器中使用的JavaScript,它就是它,不需要一个构建步骤就可以将它转换成可以在今天的浏览器中运行的东西
ES6(也称为ES2015)是JavaScript的下一个迭代,但它不能在今天的浏览器中运行。有相当多的编译器将导出ES5以便在浏览器中运行。它仍然是一种动态(无类型)语言。
TypeScript提供了一个可选的输入系统,同时引入了JavaScript未来版本(ES6和ES7)的一些特性。
注意:很多编译器(如babel, TypeScript)允许你使用当前JavaScript未来版本的特性,并导出仍然可以在当前浏览器中运行的代码。
推荐文章
- 从元组/数组值派生联合类型
- 如何在Angular2 ngSwitch语句中使用typescript enum值
- Babel 6改变了它导出默认值的方式
- ES6模板文字可以在运行时被替换(或重用)吗?
- AngularJS控制器的生命周期是什么?
- 找到合成属性@panelState。请在您的应用程序中包含“BrowserAnimationsModule”或“NoopAnimationsModule”。
- Angular 2+和debounce
- $destroy是否删除事件监听器?
- 在TypeScript箭头函数中指定返回类型
- 如何使用jQuery与TypeScript
- 用布尔值将单选按钮绑定到模型
- AngularJS只适用于单页应用程序吗?
- Angular 2模板中的标签是什么意思?
- Typescript接口-可能使“一个或另一个”属性要求?
- 如何扩展/继承组件?