2016-10-17 75 views
0

我的公司正在考虑从角度1.5.x升级到角度2.代码库是用ES5编写的,因此也转而讨论ES6或TypeScript。迁移到角度2 - ES6或TypeScript?

TypeScript在基本JavaScript中增加了一些OOP功能,而且由于当前代码更多的是功能性编程方法,而不是使用OOP风格(类等),所以我想知道迁移时从JS切换到TS的其他好处角2?

角2中有多少OOP?

+0

你的问题就像询问使用哪个IDE。 ES6或TS是你的团队需要做出的选择。事实是,TS是ES5的超集,具有ES6的功能。所以,你可以在ES6中做的所有事情,你也可以在TS中做 - 但不是相反。关于OOP:组件,指令和服务现在都是类。 – rinukkusu

+0

angular2的事实上的标准语言是TypeScript。框架是用TS编写的,默认情况下文档是在TypeScript中编写的,并且代码更易于维护,并且易于在TS中编写。只需使用TypeScript,它是一件不费脑筋的事情。 –

+0

目前尚不清楚您是否打算使用原生ES6或将其与Babel一起进行传输。在最后一种情况下,您不仅限于ES6,还可以使用ES.next功能集(与TS中的OOP方式大致相同)。 A2依赖注入在设计时考虑了TS,它允许在大多数情况下跳过'@ Inject'装饰器和'this.injectedService = injectedService',这是TS在A2开发环境中的主要优势。对于ES5/ES6 vs ES.next,[请参阅此答案](http://stackoverflow.com/a/39029435/3731501)。 – estus

回答

2

Typescript不是关于OOP的。 OOP与类型正交(认为Java与Smalltalk)。 Typescript与静态类型验证有关:您是否在使用数组的情况下使用字符串?我实际上在上个星期五修正了一个同事代码中的错误,他在他认为是数组的长度上使用for循环(Array.prototype.forEach使得这很容易发现错误)。

静态类型检查是否值得在整个代码库中添加类型注释?这是一个判断呼吁。另一方面,ES6/ESNext只是扁平化,为您提供更好的编写代码的方式。我不明白怎么会有人做论据

function(arr) { 
    var foo = arr[0]; 
    var bar = arr[1]; 
    return foo + bar; 
} 

优于

([foo, bar]) => foo + bar 

同为许多其他功能,如果你在一个实用的风格你的代码(像我)写的是可能散布着

Object.keys(someObj) 
    .map(k => someObj[k]) 
    .filter... 

现在你只需要Object.values。再加上大约一百万个其他功能。