2016-10-17 74 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。再加上大約一百萬個其他功能。