TypeScript 3.9穩定版本新增功能


TypeScript於5月12日發布了該年度的第二個版本。它是3.9版,現在是穩定版。在本文中,我將指出TypeScript 3.9的一些令人興奮的新功能。

@ts-expect-error

讓我們舉一個例子,我們定義一個以兩個字符串為參數的函數。

printName(firstName: string, lastName: string) {     console.log(firstName);    console.log(lastName);    assert(typeof firstName === "string");       assert(typeof lastName === "string");}

 

通常,當TypeScript用戶濫用此功能時,他們會得到一條有用的紅色花樣和一條錯誤消息,而JavaScript用戶將斷言它為錯誤。但是,如果我們編寫一個單元測試來檢查此功能,將會發生什么?

expect(() => {    printName(1234, 5678); }).toThrow();

 

如果我們的測試是用TS編寫的,則會引發如下錯誤:

printName(1234, 5678);// ~~~ // error: Type ‘number’ is not assignable to type ‘string’.

 

作為對此的解決方案,TypeScript 3.9版帶來了一個新功能:// @ts-expect-error注釋。如果我們在代碼行之前將此注釋作為前綴放置,TypeScript將不會報告錯誤。

但是,如果沒有錯誤,TypeScript將告知我們的代碼中有不必要的注釋,如下所示:Unused '@ts-expect-error' directive。

此//@ts-expect-error注釋的另一個用途是我們可以將其用作禁止注釋。// @ts-ignore是一個現有的注釋,用作抑制注釋-兩者之間的主要區別在於,// @ts-ignore如果下一行沒有錯誤,它將通知您。

速度改進

對於早期版本的TypeScript,對於Material-UI之類的軟件包的編譯和編輯速度存在很多抱怨。

在新版本中,TypeScript開發團隊通過優化涉及大型聯合,相交,條件類型和映射類型的幾種病理情況來解決此問題,並減少了Material-UI編譯中40%的時間。此外,他們還致力於與Visual Studio Code等編輯器有關的文件重命名功能。

JavaScript中的CommonJS自動導入

以前,無論你使用哪種文件類型,TypeScript始終期望ECMAScript樣式的導入。但是,大多數開發人員require(); 在編寫JavaScript文件時都使用CommonJS樣式的導入而不是ECMAScript樣式的模塊。

ECMAScript樣式:import * as fs from "fs";

CommonJS樣式:const fs = require("fs");

 

在最新版本中,TypeScript現在可以自動檢測您正在使用的導入類型,以保持文件樣式的整潔。

推斷和改進 Promise.all

在3.7版中,TypeScript提出了對函數聲明的更新,例如Promise.all和Promise.race。但是,此更新有一些並發症,因為當與null或混合使用時會引起回歸undefined。下面給出一個例子。

interface Bird{  fly(): void } interface Fish{  singKissFromARose(): void } async function animalBehaviours(birdBehaviour: Promise<Bird>, fishBehaviour: Promise<Fish| undefined>) {  let [bird, fish] = await Promise.all([birdBehaviour, fishBehaviour]);  bird.fly(); // ~~~~  // Object is possibly ‘undefined’.

盡管fishBehaviour 是其中包含的一個undefined,但它也以某種方式影響了birdBehaviour 包含undefined。因此,TypeScript 3.9版本也解決了此問題。

代碼操作保留新行

許多開發人員喜歡在單獨的功能代碼行之間保留新行,但是早期的TypeScript代碼重構並未保留新行。它幾乎刪除了代碼行之間的所有空白行。在最新版本中,TypeScript可以解決此問題,現在TypeScript代碼重構在運行重構后可以在代碼中保留新行。

缺少返回表達式的快速修復

有時我們可能會忘記在函數的末尾從函數返回值。因此,TypeScript現在提供了一種快速解決方案來添加缺失的return語句。

條件表達式中的未調用函數檢查

在3.7版之后,TypeScript在if條件中檢查未調用的函數,並報告錯誤。在3.9版中,此錯誤檢查也進一步擴展到三元條件語句。

其他微小變化

除了這些更新之外,還有一些較小的更新變化,例如:

  • }與>現在的無效JSX文本字符

  • export * 被保留

  • 獲取器和設置器不再枚舉

  • 擴展的類型參數any 不再充當any

  • 更多libdom.d.ts完善

總體而言,這些是我們在最新版本的TypeScript中可以看到的變化。因此,如果你是TypeScript愛好者,那么最好保持最新的更新,這可以使你的編碼工作更輕松。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM