我的公司正在考慮從角度1.5.x升級到角度2.代碼庫是用ES5編寫的,因此也轉而討論ES6或TypeScript。遷移到角度2 - ES6或TypeScript?
TypeScript在基本JavaScript中增加了一些OOP功能,而且由於當前代碼更多的是功能性編程方法,而不是使用OOP風格(類等),所以我想知道遷移時從JS切換到TS的其他好處角2?
角2中有多少OOP?
我的公司正在考慮從角度1.5.x升級到角度2.代碼庫是用ES5編寫的,因此也轉而討論ES6或TypeScript。遷移到角度2 - ES6或TypeScript?
TypeScript在基本JavaScript中增加了一些OOP功能,而且由於當前代碼更多的是功能性編程方法,而不是使用OOP風格(類等),所以我想知道遷移時從JS切換到TS的其他好處角2?
角2中有多少OOP?
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
。再加上大約一百萬個其他功能。
你的問題就像詢問使用哪個IDE。 ES6或TS是你的團隊需要做出的選擇。事實是,TS是ES5的超集,具有ES6的功能。所以,你可以在ES6中做的所有事情,你也可以在TS中做 - 但不是相反。關於OOP:組件,指令和服務現在都是類。 – rinukkusu
angular2的事實上的標準語言是TypeScript。框架是用TS編寫的,默認情況下文檔是在TypeScript中編寫的,並且代碼更易於維護,並且易於在TS中編寫。只需使用TypeScript,它是一件不費腦筋的事情。 –
目前尚不清楚您是否打算使用原生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