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.
}
}
。