微軟釋出TypeScript 3.3候選版,改善了呼叫Union類型的行為,並且在複合專案支援漸增文件監視,提升建置速度。微軟提到,這個版本應該可以更順暢地更新,而不會發生嚴重問題。

在TypeScript中,擁有Union類型A和B兩種,便允許開發者存取A和B共同的所有屬性,也就是說,假設有一屬性存在於Union的每個類型中,則開發者就能從Union類型中獲取該屬性。而在處理呼叫類型方面,當每個類型只有一個具有相同參數的型簽(Type Signature)時,開發者便可以自然地呼叫這些類型。

不過,有時候這種限制會過於嚴格,微軟以FruitEaters和ColorConsumers為例(下圖),這兩者應該都需要能取得Orange字串,並回傳數字或是字串,這樣的情況過去會發生問題,不過,在TypeScript 3.3將不會再出現錯誤訊息,這些型簽的參數將交叉產生新的型簽。

但是其中仍存在一些限制,像是Union中僅限一個類型具有多個超載,或是Union中至少一個類型具有通用型簽,這種新行為才會啟動,這代表在number[]和string[]上的方法,像是map將不可呼叫。另外,forEach將是可呼叫的,只不過在noImplicitAny下可能還是存在一些問題,微軟接下來還會繼續改進這部分。

而在TypeScript 3.0中,微軟為結構化建置新增複合專案(Composite projects)功能,而這項功能要讓開發者在將大專案分解成小部分時,能在不影響現有TypeScript體驗下,加速建置並保留專案結構。

得利於複合專案,現在TypeScript 3.3使用--build模式,僅重新編譯專案和相依項目集。而使用--build模式的--watch旗標,則能利用漸增檔案監視(Incremental File Watching),這代表使用--build--watch可以更快速進行建置,在微軟的測試中,建置時間縮短了50%到75%。

熱門新聞

Advertisement