面對TypeScript,堅持JS的理由是什麼?
“前端工程師用 JavaScript,C#工程師用 TypeScript,Ruby工程師用 CoffeeScript,Java工程師用Dart。”你對這句話怎麼看呢?本文主要討論了JavaScript和TypeScript之間的恩怨情仇,看看在大規模開發的場景下到底誰更強?企業更側重於選擇哪一種?
JavaScript雖說集程式設計師萬千寵愛於一身,但對於企業大規模開發很難管理。所以企業開發都選用什麼工具呢?TypeScript提供了一個有吸引力的選擇!眾所周知,TypeScript是JavaScript的擴充套件,但為什麼各大排行榜上JavaScript總是排名更靠前呢?
在最新一期的TIOBE排行榜中,JavaScript排名第6,而前十名根本沒有TypeScript的影子,那為什麼企業大規模開發都會選用TypeScript呢?
對於越來越多的程式設計師來說,JavaScript是早已掌握了的技能,因此一直佔據著程式語言排行榜前十名的位置。但JavaScript從來都不是團隊構建大型複雜應用程式的首選,企業長期以來都喜歡Java和C#等強型別語言,但這些語言的虛擬機器在瀏覽器中從來沒有一個歸屬。作為JavaScript的延伸,TypeScript既彌補了JavaScript在大規模開發過程中的不足,又具備了適合各類瀏覽器的虛擬機器。
正面交戰:Github熱度如何?
作為前輩,JavaScript的Star數量確實遠高於TypeScript,但熱度確不及TypeScript,TypeScript是微軟的開源專案,其貢獻者絕大多數都是微軟的工程師,提交量達到20212,而JavaScript主要是Netscape和Mozilla基金會開源的,貢獻者絕大多數都是來自這兩大組織的成員,而提交量僅有1546份,可見TypeScript社群更為活躍、問題修復與反饋也十分及時。
TypeScript優勢:簡單易用!
對JavaScript有效的對TypeScript同樣有效,因此可以透過簡單地將.js的副檔名更改為.ts來使用TypeScript編譯器和TypeScript感知工具。
TypeScript具備absolutelytyped.org收集型別定義,提供數百個JavaScript庫(包括jQuery,Angular和Bootstrap)的定義並描述這些庫的匯出介面。由於TypeScript可以在任何平臺上定位JavaScript虛擬機器,並且不僅提供編譯器,還提供一組支援智慧編碼的語言服務。
JavaScript弱勢:靜態型別檢查, 程式碼重構和語言服務......
如果程式設計師只需要寫兩三千行指令碼,那你可能用著JavaScript還樂在其中。如果程式設計師需要寫個數萬行指令碼,還用JavaScript恐怕要叫苦不迭了,JavaScript的缺點恐怕可以說上一籮筐。TypeScript在靜態型別檢查、程式碼重構和語言服務方面的優勢十分明顯,而這些正好是JavaScript的劣勢。
除此之外,JavaScript在字串,數字和日期之間的隱式轉換使得難以視覺化流入和流出函式的物件型別。在團隊開發中,對程式碼進行註釋是極其重要的,如果你剛好負責一個底層庫的開發,不需要再單獨提交一份文件進行詳細解釋,TypeScript可以清楚記錄每一個物件的屬性,方法的引數等。JavaScript也可以做,但還是不夠,還是需要單獨寫一份文件才夠詳細。
TypeScript優勢:測試開銷
說完了開發自然就是測試,對於團隊開發而言,測試也是一筆不小的開銷,事無鉅細才能在市場上有立足之地。很多程式設計師或許都曾想過“編寫靜態型別輸入的測試的可行性”問題,TypeScript是基於ECMAScript 6標準的實現,它的測試可將程式作為一組模組傳播到多個檔案。TypeScript採用的這種機制是大規模開發的福音。當以標準方式宣告模組依賴關係時,程式設計師可以更容易地理解這些依賴關係,工具可以使這種理解自動化,程式碼重構風險較小。
總結一句話:對於Javascript來說,TypeScript就像未來的自己!隨著技術的發展,JavaScript終會向著TypeScript的方向看齊,包括編輯器、各類庫和API都會與TypeScript有更棒的整合,雖然現在已經很棒了。
所以,你的企業也在用TypeScript嗎?如果你還在用JavaScript,你堅持的理由是什麼呢?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2153994/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 主宰遊戲屆,任天堂在堅持什麼?遊戲
- 為什麼要堅持寫技術博文
- Linux靜態路由是什麼?UG代表什麼?Linux路由
- js堅持不懈之11:focus()方法JS
- 程式設計師 為什麼要堅持寫部落格程式設計師
- 替代品不少,大家堅持用Hadoop的原因是什麼?Hadoop
- 你使用電話機器人的理由是什麼?機器人
- 為什麼我反對過度使用TypeScript?TypeScript
- js堅持不懈之13:JavaScript查詢HTML元素的方法JSJavaScriptHTML
- 不斷湧現新作,是什麼讓開發者們堅持做獨立遊戲?遊戲
- js堅持不懈之17:onmousedown、onmouseup 以及 onclick 事件JS事件
- 後端說,單頁面SPA和前端路由是怎麼回事後端前端路由
- 什麼是 TypeScript 的 Module AugmentationTypeScript
- 學習跪在堅持!
- 堅持程式設計程式設計
- 請教JSP/servlet容器對更新的JSP頁面處理的原理JSServlet
- 騰訊怎麼玩體育:堅持媒體定位
- js堅持不懈之15:修改html內容和屬性的方法JSHTML
- pixi.js持續渲染頁面JS
- Gitlab堅持用雲的原因Gitlab
- TypeScript是什麼,為什麼要使用它?TypeScript
- ThinkJS 3.0 如何實現對 TypeScript 的支援JSTypeScript
- 為什麼我對JavaScript的未來持樂觀態度?JavaScript
- 雲伺服器代理商選哪家好?理由是什麼?伺服器
- 求職季 | 為什麼每個開發者都應該堅持經營一個部落格?求職
- TypeScript 中的字面量是什麼意思TypeScript
- 為什麼 JavaScript 是 TypeScript 的基礎JavaScriptTypeScript
- 技術團隊為什麼要堅持開展技術分享會以及落地實施
- TypeScript 中 as const 是什麼TypeScript
- 堅持就會有回報
- goCms-持續更新,希望能堅持下去Go
- 對市場必須懷有敬畏之心--致堅持獨立遊戲的諸位遊戲
- js和css檔案後面引數的作用是什麼JSCSS
- 什麼是 TypeScript 裡的 Constructor signatureTypeScriptStruct
- 堅持多工處理?你只是看上去的省時間、高效率……
- 國外機器學習工程師正面臨失業,為什麼他們還在堅持學習ML?機器學習工程師
- Arthas 開源一週年,GitHub Star 16 K ,我們一直在堅持什麼?Github
- 改變自己的學習方法,堅持到底