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貢獻指南和微軟開源行為準則。
檢視英文原文:https://www.infoq.com/news/2019/02/typescript-3-3-release
相關文章
- TypeScript 聯合型別TypeScript型別
- typeScript 型別斷言、聯合型別和交叉型別(七)TypeScript型別
- TypeScript 可辨識聯合型別TypeScript型別
- 系統學習 TypeScript(五)——聯合型別TypeScript型別
- 來學習typescript 吧! --6 聯合型別 | 交叉型別 |型別斷言TypeScript型別
- 時間型別和時間戳型別時間戳
- TypeScript中,如何利用陣列生成一個聯合型別TypeScript陣列型別
- Typescript 下 Mongoose 外來鍵型別&外來鍵陣列型別定義&型別保護&聯合型別理解TypeScriptGo型別陣列
- TypeScript Null和Undefined 型別TypeScriptNullUndefined型別
- TypeScript型別系統和基礎型別TypeScript型別
- 循序漸進理解TypeScript型別模式TypeScript型別模式
- GNOME 3.36 釋出,對視覺和效能進行了改進視覺
- TypeScript 基本型別和泛型的使用TypeScript型別泛型
- typescript 介面和物件型別(四)TypeScript物件型別
- TensorFlow 1.7.0正式釋出,Bug修復和改進內容都在這裡了
- TensorFlow 1.8.0正式釋出,Bug修復和改進內容都在這裡了
- XSD 日期和時間資料型別資料型別
- Spring 各版本釋出時間與區別Spring
- 建構函式之間的呼叫函式
- TypeScript this型別TypeScript型別
- TensorFlow1.8.0正式釋出,Bug修復和改進內容都在這裡了
- ChunJun&OceanBase聯合方案首次釋出:構建一體化資料整合方案
- TypeScript 泛型型別TypeScript泛型型別
- PostgreSQL:時間——型別、運算子和函式SQL型別函式
- TypeScript 3.3來了!快看看有什麼新功能TypeScript
- 重磅!Apache Kafka 3.3 正式釋出!ApacheKafka
- Typescript:基本型別TypeScript型別
- TypeScript Widened型別TypeScriptIDE型別
- TypeScript Never型別TypeScript型別
- TypeScript Any型別TypeScript型別
- TypeScript 索引型別TypeScript索引型別
- TypeScript 型別相容TypeScript型別
- TypeScript 交叉型別TypeScript型別
- TypeScript void 型別TypeScript型別
- TypeScript 字串型別TypeScript字串型別
- TypeScript 型別安全TypeScript型別
- Flink 的時間型別型別
- MySQL時間型別和模式詳情陸轄MySql型別模式