TypeScript 4.4beat版本發(fā)布
你好,我是小弋。
前不久TS發(fā)布4.4的beat版本:

到底4.4的版本中有哪些features,我們可以參考下面的:
鏈接:https://github.com/microsoft/TypeScript/issues/44237
里面大致描述4.4版本發(fā)布的流程,預計8月底發(fā)布正式版本。
主要更新內(nèi)容:
提供針對 Aliased Conditions 的控制流分析 (Control Flow Analysis) 增加 symbol 類型和模板字符串模式的索引簽名 Catch 語句中默認使用 unknown類型 (--useUnknownInCatchVariables)新增 Exact Optional Property 類型 (--exactOptionalPropertyTypes) 針對 tsc --help的升級和改進性能改進 添加針對 JavaScript 的拼寫建議 新增實驗性的 Inlay 提示 破壞性變更
比如,我們拿出一個例子來看。
Catch 語句中默認使用 unknown 類型
經(jīng)常寫JavaScript都知道,任何類型的值都可以通過throw拋出后,在catch語句中捕獲到,那么TypeScript中是如何做統(tǒng)一的呢,
其實經(jīng)常寫TS的都知道,很早的版本中,ts會將變量轉(zhuǎn)化為any:
try {
// Who knows what this might throw...
executeSomeThirdPartyCode();
}
catch (err) { // err: any
console.error(err.message); // Allowed, because 'any'
err.thisWillProbablyFail(); // Allowed, because 'any' :(
}
但是,有時候我們知道unknown類型會是更加的選擇,所以我們可以在catch語句的時候使用unknown。
ts團隊為了考慮到效率,還是其他的原因,我們可以通過設置為默認值,也就是說,類似于--useUnknownInCatchVariables將默認類型切換成unknown。
比如下面代碼:
// @useUnknownInCatchVariables: true
try {
// ...
}
catch (e) {
e.toUpperCase(); // error
}
或者,選擇一個更加廣泛的標志?
這些我們期待正式版本的到來,就能知道答案了。
那么你是不是想來試一試TS4.4測試版本的功能呢,我們可以借助這個TS中的Playground來體驗下:

選擇對應的版本即可。
至于其他的更新以及優(yōu)化,比如更快的構建,會在構建上做優(yōu)化,讓開發(fā)體驗更佳。比如lib.d.ts的修改等等
更多的信息,趕緊去看看吧:
https://github.com/microsoft/TypeScript/issues/44237
往期推薦
評論
圖片
表情
