TypeScript 3.3 釋出:改進了聯合型別呼叫和構建時間

TypeScript 團隊繼續以雙月釋出節奏釋出了 TypeScript 3.3,這一版本改進了呼叫聯合型別的行為以及複合專案增量檔案的監聽效能。該團隊還宣佈了未來六個月的 TypeScript 路線圖 。
TypeScript 3.0 增加了對複合專案的支援,可以將大型專案分成較小的專案,改進–build 模式下的構建時間,而且只重新編譯必要的專案和依賴項,以此來優化專案間的構建。同時還增加了一個專案內增量構建 API,用於更新發生變更或包含可能會影響型別檢查的依賴項的檔案。
在 3.0 釋出之後,有關在複合專案中使用–watch 標誌的效能問題的抱怨有所增加。複合專案並沒有利用專案內增量構建功能,而是進行完整的專案構建。
現在,在 TypeScript 3.3 的–build 模式下使用–watch 標誌可以利用增量檔案監聽功能顯著改善構建時間,可以將構建時間平均縮短 50-75%。
TypeScript 支援聯合型別,開發人員可以訪問聯合成員所共有的屬性。在呼叫型別時,如果每個型別沒有具有相同引數的呼叫簽名,就很難為返回型別定義聯合。
在 TypeScript 3.3 中,每個聯合成員的引數組合在一起形成新的簽名。只有當聯合中有一個型別具有多個過載並且有一個型別具有通用簽名時,才會應用新的行為。TypeScript 團隊在 TypeScript 3.3 中新增這一新增功能,作為改進方案的第一步,並可能在將來的版本中做出進一步的改進。
與最近釋出的版本相比,TypeScript 3.3 只提供了相對適度的新功能,主要是因為雙月釋出節奏剛好碰上了寒假,但也可能是因為 TypeScript 團隊在六個月路線圖中提及的內容,線路圖重申了除了為語言新增更多功能之外的工作:
- 將型別帶給所有開發者;
- 藉助強大的工具提高生產力;
- 可訪問性和使用者體驗;
- 社群參與;
- 基礎設施和工程系統;
TypeScript 團隊仍然專注於新增新的 ECMAScript 功能和改進 TypeScript,但它已達到了一定程度的穩定性。
在過去的一年中,TypeScript 在 JavaScript 生態系統得到了大規模採用,包括 Vue.js 的下一個版本、 Jest 和 Storybook 將遷移到 TypeScript。很多開發人員和專案正在從 JavaScript 遷移到 TypeScript,而有一些則從 Flow 遷移到 TypeScript。
來自 Hootsuite 的軟體工程經理 Ovidiu Bute 解釋了他們為什麼要遷移到 TypeScript:
我們還觀察了與這兩個專案相關的社群。Flow 由 Facebook 以一種非常封閉的方式驅動,開發從來都不透明,也沒有提供公開的路線圖,除 Facebook 以外很少有人蔘與這個專案。相比之下,TypeScript 在幾年前遷移到 GitHub 之後就開始擁抱開源。他們保持最新的路線圖,接受外部貢獻,並與社群保持非常密切的關係。
Babel 原始作者和 Facebook 工程師 Sebastian McKenzie 在回答使用者提出的有關 Flow 的功能時解釋道:
老實說,我建議現在切換到 TypeScript,因為 Flow 的開源之旅不被重視。
Flow 團隊已經開始著手解決這些問題,可以在這裡看到最近的進展和 2019 年的計劃。Facebook 軟體工程師 Avik Chaudhuri 闡述了從 Flow 到 TypeScript 的遷移:
最近,一些最初由 Facebook 建立的開源專案計劃使用 TypeScript 重寫。在 Facebook,我們非常重視各個團隊在建立路線圖以及在他們盡最大努力構建產品時的獨立性。一些專案決定切換到 TypeScript,有了外部貢獻者,開發可能會更容易,我們尊重他們的決定。
一些現有框架(如 Angular、Dojo 和 Ionic )已經使用了 TypeScript,一些框架則計劃切換到 TypeScript,或者至少提供了型別定義或 CLI 工具,由此可見,一大部分 JavaScript 開發人員現在正在採用 TypeScript。
TypeScript 是基於 Apache 2 許可發行的開源軟體。開發人員可以通過 TypeScript GitHub 專案 參與貢獻和提供反饋,並遵守 TypeScript 貢獻指南 和 微軟開源行為準則 。
(本文章轉載自infoq, 如有侵權, 請聯絡作者刪除)