TypeScript 4.4beat版本發(fā)布,你知道了嗎?
本文轉(zhuǎn)載自微信公眾號(hào)「天天Up」,作者小弋 。轉(zhuǎn)載本文請(qǐng)聯(lián)系天天Up公眾號(hào)。
你好,我是小弋。
前不久TS發(fā)布4.4的beat版本:
發(fā)布說(shuō)明
到底4.4的版本中有哪些features,我們可以參考下面的:
鏈接:https://github.com/microsoft/TypeScript/issues/44237
里面大致描述4.4版本發(fā)布的流程,預(yù)計(jì)8月底發(fā)布正式版本。
主要更新內(nèi)容:
- 提供針對(duì) Aliased Conditions 的控制流分析 (Control Flow Analysis)
- 增加 symbol 類型和模板字符串模式的索引簽名
- Catch 語(yǔ)句中默認(rèn)使用 unknown 類型 (--useUnknownInCatchVariables)
- 新增 Exact Optional Property 類型 (--exactOptionalPropertyTypes)
- 針對(duì) tsc --help 的升級(jí)和改進(jìn)
- 性能改進(jìn)
- 添加針對(duì) JavaScript 的拼寫建議
- 新增實(shí)驗(yàn)性的 Inlay 提示
- 破壞性變更
比如,我們拿出一個(gè)例子來(lái)看。
Catch 語(yǔ)句中默認(rèn)使用 unknown 類型
經(jīng)常寫JavaScript都知道,任何類型的值都可以通過(guò)throw拋出后,在catch語(yǔ)句中捕獲到,那么TypeScript中是如何做統(tǒng)一的呢,
其實(shí)經(jīng)常寫TS的都知道,很早的版本中,ts會(huì)將變量轉(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' :(
- }
但是,有時(shí)候我們知道unknown類型會(huì)是更加的選擇,所以我們可以在catch語(yǔ)句的時(shí)候使用unknown。
ts團(tuán)隊(duì)為了考慮到效率,還是其他的原因,我們可以通過(guò)設(shè)置為默認(rèn)值,也就是說(shuō),類似于--useUnknownInCatchVariables將默認(rèn)類型切換成unknown。
比如下面代碼:
- // @useUnknownInCatchVariables: true
- try {
- // ...
- }
- catch (e) {
- e.toUpperCase(); // error
- }
或者,選擇一個(gè)更加廣泛的標(biāo)志?
這些我們期待正式版本的到來(lái),就能知道答案了。
那么你是不是想來(lái)試一試TS4.4測(cè)試版本的功能呢,我們可以借助這個(gè)TS中的Playground來(lái)體驗(yàn)下:
playground
選擇對(duì)應(yīng)的版本即可。
至于其他的更新以及優(yōu)化,比如更快的構(gòu)建,會(huì)在構(gòu)建上做優(yōu)化,讓開(kāi)發(fā)體驗(yàn)更佳。比如lib.d.ts的修改等等
更多的信息,趕緊去看看吧:
https://github.com/microsoft/TypeScript/issues/44237






































