本章概述從 JavaScript 遷移程式碼庫至 TypeScript 的策略。也會提到進一步閱讀的資料。
以下是遷移至 TypeScript 的三個策略
我們可以支援我們的程式碼庫中混合 JavaScript 和 TypeScript 檔案。我們從只有 JavaScript 檔案開始,然後將愈來愈多檔案切換至 TypeScript。
我們可以保留目前的 (非 TypeScript) 建置程序和我們的純 JavaScript 程式碼庫。我們透過 JSDoc 註解新增靜態型別資訊,並將 TypeScript 用作型別檢查器 (而非編譯器)。一旦所有內容都正確輸入,我們就會切換至 TypeScript 進行建置。
對於大型專案,在遷移期間可能會出現過多 TypeScript 錯誤。然後,快照測試可以協助我們找出已修正的錯誤和新的錯誤。
更多資訊
如果我們使用編譯器選項 --allowJs
,TypeScript 編譯器支援混合 JavaScript 和 TypeScript 檔案
一開始,只有 JavaScript 檔案。然後,我們會逐一將檔案切換至 TypeScript。在我們這樣做的同時,我們的程式碼庫會持續被編譯。
以下是 tsconfig.json
的外觀
{
"compilerOptions": {
···
"allowJs": true
}
}
更多資訊
此方法的運作方式如下
--noEmit
)。除了編譯器選項 --allowJs
(用於允許和複製 JavaScript 檔案) 之外,我們還必須使用編譯器選項 --checkJs
(用於檢查 JavaScript 檔案的型別)。.js
檔案切換到 .ts
檔案並非急務,因為整個程式碼庫已經完全靜態類型化。我們甚至可以產生類型檔案(副檔名 .d.ts
)。這是我們透過 JSDoc 註解為純 JavaScript 指定靜態類型的做法
/**
* @param {number} x - The first operand
* @param {number} y - The second operand
* @returns {number} The sum of both operands
*/
function add(x, y) {
+ y;
return x }
/** @typedef {{ prop1: string, prop2: string, prop3?: number }} SpecialType */
/** @typedef {(data: string, index?: number) => boolean} Predicate */
更多資訊
在大型 JavaScript 專案中,切換到 TypeScript 可能會產生太多錯誤,無論我們選擇哪種方法。那麼快照測試 TypeScript 錯誤可能是一個選項
更多資訊
我們快速瀏覽了遷移到 TypeScript 的策略。另外兩個提示