参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

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,可以通过以下方式在你的计算机上全局安装 (-g) TypeScript

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

当你选择一个方法时,你会得到参数帮助,并且可以随时通过悬停获取信息。

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 编译器会抱怨“错误 TS2322:类型 '2' 不能分配给类型 'string'”。你可以在 VS Code 的编辑器(带有悬停信息的红色波浪线)和问题面板(⇧⌘M(Windows、Linux Ctrl+Shift+M)中看到类型检查错误。[ts] 前缀让你知道此错误来自 TypeScript 语言服务。

incorrect type error

快速修复

TypeScript 语言服务拥有一套强大的诊断功能,可以发现常见的编码问题。例如,它可以分析你的源代码并检测无法访问的代码,这些代码在编辑器中会显示为灰色。如果你将鼠标悬停在该行源代码上,你会看到一个解释性的悬停提示;如果你将光标放在该行上,你会得到一个快速修复灯泡图标。

unreachable code detected

点击灯泡或按 ⌘. (Windows、Linux Ctrl+.) 会弹出快速修复菜单,你可以在其中选择移除无法访问的代码修复。

此外,代码操作小部件:包括附近的快速修复 (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。请开启源映射并重新构建你的项目。