[譯] 爲什麼 TypeScript 愈發流行了?

爲什麼 TypeScript 愈發流行了?

爲什麼 TypeScript 這麼流行呢?許多主流的開發框架依賴於它,它還能提升開發者在不斷變化的 JavaScript 世界中的生產力。javascript

在最近的 Stack Overflow 開發者調查以及年度 RedMonk 編程語言排名中都顯示 TypeScript —— 由微軟發起的結合了編譯高級 JavaScript 特性與靜態類型檢查及工具的開源項目 —— 正在達到新的人氣高度。經過爲 JavaScript 提供最基本的檢查語法,TypeScript 容許開發者對他們的代碼進行類型檢查,這能夠暴露 bug 並改善大型 JavaScript 代碼庫的結構和文檔)。前端

參與了 Stack Overflow 調查的開發者中有 9.5% 的人正在使用 TypeScript,這使得 TypeScript 成爲了第九流行的編程語言,排名在 Ruby 以前,用戶量是 Perl 的兩倍。這次 Stack Overflow 調查中的受訪者來自不一樣領域,使用最普遍的兩種語言是 JavaScript 和 SQL,這說明這次調查並不是只針對前端開發。事實上,TypeScript 程序員出如今了參與 Stack Overflow 調查的全部 4 種工做角色中:web 開發者、桌面開發者、系統管理員與 DevOps 以及數據科學家。vue

RedMonk 的排名將 Stack Overflow 的數據與 GitHub 上的 pull request 結合起來試圖理解開發者的想法以及他們正在使用什麼。TypeScript 一樣受到了開發者的歡迎,排名從第 26 位上升到了第 17 位。其中一部分緣由是 TypeScript 在 Stack Overflow 上關注度的提高,但主要仍是由於在 GitHub 上參與的開發者在不斷增多。java

的確,GitHub 在其 2016 年度總結中把 TypeScript 列爲在 GitHub 上用於項目開發的 316 種編程語言中最受歡迎榜單的第 15 位(基於 pull request 的數量以及相較與前一年 pull request 250% 的增加率)。node

在另外一個針對開發者的調查中,TypeScript 在衆多 JavaScript 的『替代』風格中擁有最高的使用率(21%)以及還沒有的用戶中最高的關注度(39%)。這項調查的方式不一樣尋常 —— 它很奇怪地將轉譯器和包管理器(如 npmBower)混合在一塊兒 —— 但參與了這項調查且常用 TypeScript 的開發者也常用 ECMAScript 2015NativeScriptAngular,尤爲是 Angular2。react

來自 RedMonk 的 Stephen O’Grady 指出『彷佛有理由相信 Angular』在 TypeScript 的日益普及中發揮了做用。雖然 Angular2 只是衆多使用了 TypeScript 的項目中的一個(Asana 和 Dojo 已經在使用了,Adobe、Google、Palantir、SitePen 以及 eBay 的一些內部項目也是同樣),但最爲人們所熟知的恐怕仍是像 Rob Wormald 這樣的 Google 員工在宣傳 Angular 時順帶推廣了 TypeScript。android

不止是 Angular2

『毫無疑問,咱們與 Angular 團隊的合做有助於 TypeScript 的推廣』,TypeScript 核心成員 Anders Hejlsberg 向 New Stack 說到。『但即使如此,我認爲真正重要的點在於這是一次表明了行業力量重大信心的信任投票。』webpack

他指出,這種信任投票帶來的影響不只僅在於 Angular。『目前,許多其它框架也在使用 TypeScript。AureliaIonic、NativeScript都以某種方式使用了 TypeScript。Ember 框架與 Glimmer 框架的最新發布版本就是使用 TypeScript 編寫的。』ios

『咱們看到許多來自在這個行業經驗豐富的人的信任投票。我想這多是每一個在大公司的人都會注意到的』—— Anders Hejlsberggit

這種信任投票也給框架的使用者帶來了機會。『咱們作了不少努力以成爲 React 生態中的重要一員。咱們支持 JSX,支持全部你在重構或是瀏覽 JSX 代碼時想要用到的類型系統的高級特性。咱們還正在和 Vue.js 社區合做以更好的支持這個框架中用到的各類模式。』 Hejlsberg說到。

爲新框架提供支持是在開發者中保持流行度的一項重要手段。『咱們一直都在關注框架領域。咱們知道這是一個不斷變化的生態系統。它在不斷變化,你必須時刻準備着並保證一切都能正常工做。』

對於工具鏈來講也是如此,尤爲是在 ECMAScript 模塊愈發流行的狀況下。『許多人使用模塊編寫現代風格的 JavaScript 應用,當你使用 ECMAScript 6 模塊的時候,你須要使用一個相似 WebpackRollup.js 這樣的打包工具將代碼打包起來以便能在瀏覽器中運行。咱們要確保 TypeScript 能夠與這些工具配合使用以保證咱們能夠融入整個工具鏈之中』 Hejlsberg說到。

React 是由 Facebook 發起的庫。Angular 是從 Google 衍生出來的框架。有不少分析把它們作了比較。總的來講,Angular 處於領跑地位,與此同時 Vue.js 正在受到大量關注。Angular 在 TypeScript 的用戶圈中受到追捧,41% 的人傾向於 2.x 版本,另外 18% 的人則更喜歡老版本。隨着近期 Angular 4 的發佈以及 TypeScript 的日益流行,咱們預計 JavaScript 的戰爭還將持續下去(Lawrence Hecht)。

擁有 TypeScript 類型定義的庫的數量也在穩步增加。DefinitelyTyped,一個維護 TypeScript 類型定義的倉庫,如今已經包含了超過 3000 個框架和庫。經過把聲明文件做爲 npm 包發佈在 @type 命名空間下,這個過程被大大提速了。

『這意味着如今有了一個能夠預測哪些框架支持類型的方法 —— 咱們能夠自動提供這些類型。當咱們發現你引用了某個特定的框架時,咱們就能夠幫你找到類型定義,你就沒必要親自去尋找了。』事實上,Hejlsberg 聲稱:『對某些開發者來講,某個框架是否擁有類型定義,已經成爲了他們在選擇框架時的決定性因素。』

『一般,TypeScript 被採用的流程 —— 不管是企業,創業團隊仍是我的開發者 —— 是你在某個項目中嘗試使用並發現它很棒,接着你就開始推薦給別人。就這樣,它就在你的影響範圍內傳播開了。』—— Anders Hejlsberg

關注度的提升彷佛是用戶增加的緣由之一。『咱們沒作過任何推廣,全部這些都是社區驅動的。其實是在穩步增加,咱們如今開始注意到增加速度更快了。』Hejlsberg 說道。

Hejlsberg 指出 TypeScript 仍是在 Stack Overflow 的調查中排在 Rust 和 Smalltalk 以後第三受歡迎的語言(排在 Swift 和 go 以前)以及第六急需人才的語言,排在 C# 和 Swift 以前。『我認爲這從很大程度上說明咱們真的解決了實際問題』Hejlsberg 指出。

微軟的影響範圍

人們很容易把 TypeScript 的成功視爲微軟經過熟悉的工具把已經在微軟世界中的企業開發者引入 JavaScript 的結果。

『咱們有一個圍繞着 C#、C++ 以及 Visual Basic 的大型開發者生態系統。許多企業在使用微軟的工具同時也有前端開發的需求,當咱們開始改善前端開發的時候,他們就坐下來,關注並開始使用了。』Hejlsberg坦言。

可是,雖然不少 TypeScript 的開發工做是在 Visual Studio 中進行的,和使用 Visual Studio Code —— 微軟開源的,跨平臺的 IDE —— 的同樣多。『那是一個和咱們沒有太多聯繫的社區。以 Visual Studio Code 來講,一半的用戶來自非 Windows 系統,所以忽然間咱們就與一個以前沒什麼交流的開發者社區創建了聯繫。』

開源快車道

TypeScript 團隊最近宣佈發佈頻率將由每季度改成每兩個月,Heljsberg 呼籲讓發佈日期更加可預測,而不是爲了添加某個新功能而延遲發佈。這也正是 ECMAScript 委員會正在採起的作法。

新的發佈節奏也會與 Visual Studio Code 保持一致,部分緣由是由於 Visual Studio Code 是由 TypeScript 開發的,但更重要的緣由在於工具是 TypeScript 吸引力的重要組成部分。

儘管 TypeScript 支持多種編輯器與 IDE 很重要,但 Hejlsberg 指出 Visual Studio Code 是另外一個幫助該語言普及的因素。

事實上,即使只是開發 JavaScript,你也能從 TypeScript 得到更好的編碼特性,他解釋道。『Visual Studio Code 和 Visual Studio 都使用 TypeScript 語言服務做爲它們的 JavaScript 語言服務。因爲 TypeScript 是 JavaScript 的超集,這意味着 JavaScript 是 TypeScript 的一個子集,它只是沒有類型註釋的 TypeScript 罷了。』他指出。

在 Visual Studio Code中,打開一個 JavaScript 文件會觸發 TypeScript 的解析器、掃描器、詞法分析器和類型分析器以提供 JavaScript 代碼中的語句補全和代碼導航功能。『即便沒有類型註釋,咱們也能夠經過你使用的模塊以及聲明的類來推斷出關於項目結構的不少信息』Hejlsberg 說道。『使人驚奇的是,咱們能夠自動爲你引用的框架導入類型信息,而後就能夠爲你提供出色的語句補全功能。』

使這樣的快速發佈節奏成爲可能的是全部 pull request 被合併前必須經過測試,這保證了 master 分支的代碼質量和 TypeScript 的流行,意味着任何問題均可以被快速發現。

『咱們是一個開源項目,咱們在 GitHub 上作了不少工做。除非能經過咱們現有的 55000 個測試,不然咱們毫不合並任何 pull request;若是是增長新功能,就必須提供相應的測試代碼;若是是修改 bug,就必須提供迴歸測試。這意味着咱們的 master 分支始終保持着很高的代碼質量。』他說道。

JavaScript: 強大但複雜

除了任何一個單一因素之外,驅使 TypeScript 愈發流行的真實緣由多是現現在 JavaScript 開發愈來愈高的複雜性以及愈來愈強大的能力。

『咱們的行業和 JavaScript 的使用都發生了巨大的變化。』 Hejlsberg指出。『之前咱們生活在一個同質的世界。全部人都使用 Windows 和瀏覽器,這就是你如何使用 JavaScript 的。如今世界已經變得很是多元化。有各類不一樣的設備 —— 手機和平板電腦,還在後端使用 node 運行 JavaScript。JavaScript 還掙脫了瀏覽器,經過使用 NativeScript、React Native 或是 Cordova 你已經可使用 JavaScript 構建原生應用。』

『是的,它變得更復雜,但也有着無限多的能力。』 Hejlsberg 談到 JavaScript 時說道。『利用 JavaScript,你可使用同一種語言和工具開發出如此多種類的應用。對我而言,這正是推進全部這一切的緣由:你能夠開發不一樣類型應用的多樣性以及你能從這個不斷進化的生態系統中得到的可重用性。它不只僅變得更復雜了,也更強大了。』

TNS 分析員 Lawrence Hecht 爲此份報告的撰寫提供了幫助。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOSReact前端後端產品設計 等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃

相關文章
相關標籤/搜索