TypeScript 2.5

可選的 catch 子句變數

感謝 @tinganho 的貢獻,TypeScript 2.5 實現了一項新的 ECMAScript 特性,允許使用者省略 catch 子句中的變數。例如,在使用 JSON.parse 時,你可能需要用 try/catch 包裝函式呼叫,但你最終可能並不需要使用丟擲的 SyntaxError

ts
let input = "...";
try {
JSON.parse(input);
} catch {
// ^ Notice that our `catch` clause doesn't declare a variable.
console.log("Invalid JSON given\n\n" + input);
}

checkJs/@ts-check 模式下的型別斷言/轉換語法

TypeScript 2.5 引入了在專案中透過普通 JavaScript 斷言表示式型別的能力。其語法是一個 /** @type {...} */ 註釋,後跟一個需要重新評估型別的帶括號的表示式。例如

ts
var x = /** @type {SomeType} */ AnyParenthesizedExpression;

重複包的去重與重定向

當在 TypeScript 2.5 中使用 Node 模組解析策略進行匯入時,編譯器現在會檢查檔案是否源自“相同的”包。如果檔案源自一個 package.json 包含與之前遇到的包相同的 nameversion 欄位的包,TypeScript 會將自身重定向到最頂層的那個包。這有助於解決某些問題,例如兩個包可能包含相同的類宣告,但由於包含 private 成員而導致它們在結構上不相容的情況。

作為一個額外的福利,透過避免從重複的包中載入 .d.ts 檔案,這還可以減少編譯器和語言服務的記憶體及執行開銷。

TypeScript 2.5 引入了 preserveSymlinks 標誌,其行為與 Node.js 中的 --preserve-symlinks 標誌相對應。該標誌的行為也與 Webpack 的 resolve.symlinks 選項相反(即,將 TypeScript 的 preserveSymlinks 設定為 true,等同於將 Webpack 的 resolve.symlinks 設定為 false,反之亦然)。

在這種模式下,對模組和包的引用(例如 import/// <reference type="..." /> 指令)都是相對於符號連結檔案的位置進行解析,而不是相對於符號連結所指向的路徑。有關更具體的示例,請參閱 Node.js 官方文件

TypeScript 文件是一個開源專案。請提交 Pull Request 來幫助我們完善這些頁面 ❤

此頁面的貢獻者
MHMohamed Hegazy (51)
OTOrta Therox (12)
JBJack Bates (1)
2+

最後更新:2026 年 3 月 27 日