🚀 在 VS Code 中免費取得

Visual Studio Code 中的 TypeScript 教學

TypeScript 是 JavaScript 的類型化超集,可編譯為純 JavaScript。它提供類別、模組和介面,以協助您建置穩健的元件。

安裝 TypeScript 編譯器

Visual Studio Code 包含 TypeScript 語言支援,但不包含 TypeScript 編譯器 tsc。您需要全域或在工作區中安裝 TypeScript 編譯器,才能將 TypeScript 原始碼轉譯為 JavaScript (tsc HelloWorld.ts)。

安裝 TypeScript 最簡單的方式是透過 npm,Node.js 套件管理器。如果您已安裝 npm,您可以使用以下方式在電腦上全域安裝 TypeScript (-g)

npm install -g typescript

您可以檢查版本來測試您的安裝。

tsc --version

Hello World

讓我們從簡單的 Hello World Node.js 範例開始。建立一個名為 HelloWorld 的新資料夾並啟動 VS Code。

mkdir HelloWorld
cd HelloWorld
code .

從檔案總管中,建立一個名為 helloworld.ts 的新檔案。

create new file

現在加入以下 TypeScript 程式碼。您會注意到 TypeScript 關鍵字 letstring 類型宣告。

let message: string = 'Hello World';
console.log(message);

若要編譯您的 TypeScript 程式碼,您可以開啟整合式終端機 (⌃` (Windows、Linux Ctrl+`)) 並輸入 tsc helloworld.ts。這會編譯並建立一個新的 helloworld.js JavaScript 檔案。

compiled hello world

如果您已安裝 Node.js,您可以執行 node helloworld.js

run hello world

如果您開啟 helloworld.js,您會看到它與 helloworld.ts 看起來沒有太大差異。類型資訊已移除,而 let 現在是 var

var message = 'Hello World';
console.log(message);

IntelliSense

在 VS Code 中,您可以看到您獲得了語言功能,例如語法醒目提示和括號比對。當您在編輯器中輸入時,您可能已經注意到 IntelliSense,這是由 VS Code 和 TypeScript 語言伺服器提供的智慧程式碼完成和建議。以下您可以看到 console 的方法

IntelliSense

當您選取方法時,您會獲得參數說明,而且始終可以取得 hover 資訊。

parameter help

tsconfig.json

到目前為止,在本教學課程中,您一直依賴 TypeScript 編譯器的預設行為來編譯您的 TypeScript 原始碼。您可以透過新增一個 tsconfig.json 檔案來修改 TypeScript 編譯器選項,該檔案定義 TypeScript 專案設定,例如編譯器選項和應包含的檔案。

重要:若要在本教學課程的其餘部分使用 tsconfig.json,請在不使用輸入檔案的情況下叫用 tsc。TypeScript 編譯器知道要查看您的 tsconfig.json 以取得專案設定和編譯器選項。

新增一個簡單的 tsconfig.json,將選項設定為編譯為 ES5 並使用 CommonJS 模組

{
  "compilerOptions": {
    "target": "ES5",
    "module": "CommonJS"
  }
}

當編輯 tsconfig.json 時,IntelliSense (⌃Space (Windows、Linux Ctrl+Space)) 將一路協助您。

tsconfig.json IntelliSense

預設情況下,如果未包含 files 屬性,TypeScript 會包含目前資料夾和子資料夾中的所有 .ts 檔案,因此我們不需要明確列出 helloworld.ts

變更建置輸出

將產生的 JavaScript 檔案放在與 TypeScript 原始碼相同的資料夾中,在較大型專案中很快就會變得雜亂,因此您可以使用 outDir 屬性指定編譯器的輸出目錄。

{
  "compilerOptions": {
    "target": "ES5",
    "module": "CommonJS",
    "outDir": "out"
  }
}

刪除 helloworld.js 並執行不帶選項的命令 tsc。您會看到 helloworld.js 現在已放置在 out 目錄中。

請參閱編譯 TypeScript以了解 TypeScript 語言服務的其他功能,以及如何使用工作直接從 VS Code 執行您的建置。

錯誤檢查

TypeScript 透過強型別檢查協助您避免常見的程式設計錯誤。例如,如果您將數字指派給 message,TypeScript 編譯器會抱怨「error TS2322: Type '2' is not assignable to type 'string'」。您可以在 VS Code 的編輯器(帶有 hover 資訊的紅色波浪線)和 [問題] 面板 (⇧⌘M (Windows、Linux Ctrl+Shift+M)) 中看到類型檢查錯誤。[ts] 前置詞可讓您知道此錯誤來自 TypeScript 語言服務。

incorrect type error

快速修正

TypeScript 語言服務具有強大的診斷功能集,可尋找常見的程式碼問題。例如,它可以分析您的原始碼並偵測無法連線的程式碼,這些程式碼在編輯器中會顯示為灰色。如果您將滑鼠游標停留在原始碼行上方,您會看到一個 hover 說明,如果您將游標放在該行上,您會看到一個快速修正燈泡。

unreachable code detected

按一下燈泡或按下 ⌘. (Windows、Linux Ctrl+.) 會叫出 [快速修正] 功能表,您可以在其中選取 [移除無法連線的程式碼] 修正。

此外,「程式碼動作 Widget:包含附近快速修正」(editor.codeActionWidget.includeNearbyQuickFixes) 是一個預設啟用的設定,它將從 ⌘. (Windows、Linux Ctrl+.) (命令 ID editor.action.quickFix) 啟動行中最接近的快速修正,無論您的游標在該行中的哪個位置。

此命令會醒目提示將使用 [快速修正] 重構或修正的原始碼。一般的 [程式碼動作] 和非修正重構仍然可以在游標位置啟動。

偵錯

VS Code 具有內建的 TypeScript 偵錯支援。為了支援偵錯 TypeScript 與執行的 JavaScript 程式碼相結合,VS Code 依賴來源地圖,讓偵錯工具在原始 TypeScript 原始碼和執行的 JavaScript 之間建立對應。您可以在建置期間透過在 tsconfig.json 中設定 "sourceMap": true 來建立來源地圖。

{
  "compilerOptions": {
    "target": "ES5",
    "module": "CommonJS",
    "outDir": "out",
    "sourceMap": true
  }
}

透過執行 tsc 重新建置,您現在應該在 out 目錄中 helloworld.js 旁邊有一個 helloworld.js.map

在編輯器中開啟 helloworld.ts 的情況下,按下 F5。如果您已安裝其他偵錯工具擴充功能,您需要從下拉式清單中選取 [Node.js]。

偵錯工具將啟動工作階段、執行您的程式碼,並在 [偵錯主控台] 面板中顯示「Hello World」訊息。

debug console output

helloworld.ts 中,按一下編輯器的左側邊界來設定中斷點。如果已設定中斷點,您會看到一個紅色圓圈。再次按下 F5。執行將在中斷點命中時停止,您將能夠在 [執行和偵錯] 檢視 (⇧⌘D (Windows、Linux Ctrl+Shift+D)) 中看到偵錯資訊,例如變數值和呼叫堆疊。

debug breakpoint

請參閱偵錯 TypeScript以深入了解 VS Code 針對 TypeScript 的內建偵錯支援,以及如何針對您的專案案例設定偵錯工具。

後續步驟

本教學課程快速介紹如何使用 VS Code 進行 TypeScript 開發。請繼續閱讀以深入了解如何使用 VS Code 的編譯和偵錯支援來開發 TypeScript

常見問題

由於找不到對應的 JavaScript,因此無法啟動程式

您可能未在 tsconfig.json 中設定 "sourceMap": true,而且 VS Code Node.js 偵錯工具無法將您的 TypeScript 原始碼對應到執行的 JavaScript。開啟來源地圖並重新建置您的專案。