现已可用! 阅读有关 11 月的新功能和修复的信息。

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

当你选择一种方法时,你将获得参数帮助,并且始终可以获取悬停信息。

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。启用源映射并重建你的项目。