[譯] 為何 TypeScript 愈發流行了?

loveky發表於2017-05-12

為何 TypeScript 愈發流行了?

[譯] 為何 TypeScript 愈發流行了?

為何 TypeScript 這麼流行呢?許多主流的開發框架依賴於它,它還能提高開發者在不斷變化的 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 以及資料科學家。

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

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

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

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

不止是 Angular2

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

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

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

這種信任投票也給框架的使用者帶來了機會。『我們做了很多努力以成為 React 生態中的重要一員。我們支援 JSX,支援所有你在重構或是瀏覽 JSX 程式碼時想要用到的型別系統的高階特性。我們還正在和 Vue.js 社群合作以更好的支援這個框架中用到的各種模式。』 Hejlsberg說到。

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

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

[譯] 為何 TypeScript 愈發流行了?

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前端後端產品設計 等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃

相關文章