TypeScript 4.6 釋出

2022-03-01 09:00:22

TypeScript 4.6 現已正式

新特性概覽

自 Beta 版和 RC 版以來有什麼新變化? 

beta 版時錯過了  和 兩個特性的新增。自 beta 版以來,另外一個值得注意的變化是,。

自 RC 以來進行的一項更改是。同時還進行了一些內部重構,修復了某些問題,糾正了一些奇怪的錯誤訊息,並在某些情況下將型別檢查效能提高了 3%。可以。

此特性允許在 super 呼叫前去執行沒有參照 this 的程式碼,這是由於 JavaScript 的限制,super 前不能呼叫 this,TypeScript 之前出於實現的原因,規定不能執行所有程式碼。

範例

class Base {
    // ...
}

class Derived extends Base {
    someProperty = true;

    constructor() {
        // error!
        // have to call 'super()' first because it needs to initialize 'someProperty'.
        doSomeStuff();
        super();
    }
}

TypeScript 提供了 來生成編譯器在本次編譯工作中的耗時佔比,或者用於診斷 TypeScript 編譯器的問題。雖然生成了有價值的資訊,但在現有的跟蹤視覺化工具中閱讀效果不好。

最近釋出的 TypeScript Trace Analyzer 可更直觀、更清晰地展示報告。。

  • --target es2022

TypeScript 的--target 選項已支援es2022

這意味著像類欄位 (class fields) 這樣的特性現在會有一個可以保留的穩定輸出 target,亦意味著可使用新的內建功能如 : 和 

延伸閱讀:

這是 4.6 版本的主要特性,在 TypeScript 中引入的 JavaScript 檔案,現在會提示其語法錯誤,如重複宣告、對 export 宣告使用了修飾符、在 switch case 語句出現多次的 default case 等。類似於 TypeScript 檔案,可通過@ts-nocheck來禁用對此檔案的型別檢查。

範例

const foo = 1234;
//    ~~~
// error: Cannot redeclare block-scoped variable 'foo'.

// ...

const foo = 5678;
//    ~~~
// error: Cannot redeclare block-scoped variable 'foo'.
function container() {
    export function foo() {
//  ~~~~~~
// error: Modifiers cannot appear here.

    }
}

展開閱讀全文