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的下一個版本、JestStorybook將遷移到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貢獻指南微軟開源行爲準則

查看英文原文https://www.infoq.com/news/2019/02/typescript-3-3-release

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章