现已发布!了解 11 月的新功能和修复。

编辑 TypeScript

Visual Studio Code 对 TypeScript 提供了强大的编辑支持。本文深入探讨了 VS Code 内置的编辑和编程语言功能。如果您想了解有关 VS Code 中通用编辑功能(如键盘快捷键、多光标、搜索以及查找和替换)的更多信息,可以阅读基本编辑

IntelliSense

IntelliSense 为您提供智能代码补全、悬停信息和签名帮助,以便您更快、更正确地编写代码。

TypeScript small completions for String type

VS Code 为单独的 TypeScript 文件以及 TypeScript tsconfig.json 项目提供 IntelliSense。

悬停信息

将鼠标悬停在 TypeScript 符号上,即可快速查看其类型信息和相关文档

Hover for a lodash function

您还可以使用 ⌘K ⌘I (Windows, Linux Ctrl+K Ctrl+I) 键盘快捷键在当前光标位置显示悬停信息。

签名帮助

在您编写 TypeScript 函数调用时,VS Code 会显示有关函数签名的信息,并突出显示您当前正在完成的参数

Signature help for the lodash capitalize function

当您在函数调用中键入 (, 时,会自动显示签名帮助。使用 ⇧⌘Space (Windows, Linux Ctrl+Shift+Space) 手动触发签名帮助。

代码片段

VS Code 包括基本 TypeScript 代码片段,在您键入时会建议这些代码片段;

Typescript snippets

您可以安装扩展以获取其他代码片段或定义您自己的 TypeScript 代码片段。有关更多信息,请参阅用户定义代码片段

提示

您可以通过在设置文件中将 editor.snippetSuggestions 设置为 "none" 来禁用代码片段。如果您希望查看代码片段,可以指定相对于建议的顺序;在顶部 ("top")、在底部 ("bottom") 或按字母顺序内联排序 ("inline")。默认值为 "inline"

嵌入提示

嵌入提示将额外的内联信息添加到源代码,以帮助您了解代码的作用。

参数名称嵌入提示显示函数调用中参数的名称

Parameter name inlay hints

这可以帮助您一目了然地了解每个参数的含义,这对于采用布尔标志或具有容易混淆的参数的函数尤其有用。

要启用参数名称提示,请设置 typescript.inlayHints.parameterNames.enabled。有三个可能的值

  • none — 禁用参数嵌入提示。
  • literals — 仅显示文本(字符串、数字、布尔值)的嵌入提示。
  • all — 显示所有参数的嵌入提示。

变量类型嵌入提示显示没有显式类型注释的变量的类型。

设置:typescript.inlayHints.variableTypes.enabled

Variable type inlay hints

属性类型嵌入提示显示没有显式类型注释的类属性的类型。

设置:typescript.inlayHints.propertyDeclarationTypes.enabled

Property type inlay hints

参数类型提示显示隐式类型参数的类型。

设置:typescript.inlayHints.parameterTypes.enabled

Parameter type inlay hints

返回类型嵌入提示显示没有显式类型注释的函数的返回类型。

设置:typescript.inlayHints.functionLikeReturnTypes.enabled

Return type inlay hints

引用 CodeLens

TypeScript 引用 CodeLens 显示类、接口、方法、属性和导出的对象的内联引用计数

TypeScript references CodeLens

您可以通过在用户设置文件中将 "typescript.referencesCodeLens.enabled": true 来启用此功能。

单击引用计数以快速浏览引用列表

TypeScript references CodeLens peek

实现 CodeLens

TypeScript 实现 CodeLens 显示接口的实现者数量

TypeScript implementations CodeLens

您可以通过设置 "typescript.implementationsCodeLens.enabled": true 来启用此功能。

与引用 CodeLens 一样,您可以单击实现计数以快速浏览所有实现的列表。

自动导入

自动导入通过帮助您查找可用的符号并自动添加它们的导入来加快编码速度。

只需开始键入即可查看当前项目中所有可用 TypeScript 符号的建议

Global symbols are shown in the suggestion list

如果您从另一个文件或模块中选择一个建议,VS Code 将自动为其添加导入。在此示例中,VS Code 将 Hercules 的导入添加到文件的顶部

After selecting a symbol from a different file, an import is added for it automatically

您可以通过设置 "typescript.suggest.autoImports": false 来禁用自动导入。

粘贴时添加导入

当您在编辑器之间复制和粘贴代码时,VS Code 可以在粘贴代码时自动添加导入。当您粘贴包含未定义符号的代码时,会显示一个粘贴控件,让您选择粘贴为纯文本还是添加导入。

默认情况下启用此功能,但您可以通过切换 typescript.updateImportsOnPaste.enabled 设置来禁用它。

您可以通过配置 editor.pasteAs.preferences 设置,使粘贴时添加导入成为默认行为,而无需显示粘贴控件。包括 text.updateImports.jststext.updateImports 以在粘贴时始终添加导入。

JSX 和自动闭合标签

VS Code 的 TypeScript 功能也适用于 JSX。要在 TypeScript 中使用 JSX,请使用 *.tsx 文件扩展名而不是普通的 *.ts

IntelliSense in JSX

VS Code 还包括特定于 JSX 的功能,例如 TypeScript 中 JSX 标签的自动闭合

"typescript.autoClosingTags" 设置为 false 以禁用 JSX 标签闭合。

JSDoc 支持

VS Code 的 TypeScript IntelliSense 可以理解许多标准的 JSDoc 注释,并使用它们在建议悬停信息签名帮助中显示类型信息和文档。

TypeScript language within VS Code

请记住,将 JSDoc 用于 TypeScript 代码时,不应包含类型注释。TypeScript 编译器仅使用 TypeScript 类型注释,而忽略 JSDoc 中的注释。

要在 TypeScript 中禁用 JSDoc 注释建议,请设置 "typescript.suggest.completeJSDocs": false

代码导航

代码导航可让您快速导航 TypeScript 项目。

  • 转到定义 F12 - 转到符号定义的源代码。
  • 查看定义 ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 打开一个“查看”窗口,显示符号的定义。
  • 转到引用 ⇧F12 (Windows, Linux Shift+F12) - 显示对符号的所有引用。
  • 转到类型定义 - 转到定义符号的类型。对于类的实例,这将显示类本身,而不是实例定义的位置。
  • 转到实现 ⌘F12 (Windows, Linux Ctrl+F12) - 转到接口或抽象方法的实现。

您可以使用命令面板中的转到符号命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))通过符号搜索进行导航。

  • 转到文件中的符号 ⇧⌘O (Windows, Linux Ctrl+Shift+O)
  • 转到工作区中的符号 ⌘T (Windows, Linux Ctrl+T)

格式化

VS Code 包含一个 TypeScript 格式化程序,它提供具有合理默认设置的基本代码格式化。

使用 typescript.format.* 设置来配置内置格式化程序,例如使大括号出现在它们自己的行上。或者,如果内置格式化程序妨碍了您,请将 "typescript.format.enable" 设置为 false 以禁用它。

对于更专业的代码格式化样式,请尝试从 VS Code 市场安装一个格式化扩展。

语法高亮和语义高亮

除了语法高亮之外,TypeScript 和 JavaScript 还提供语义高亮。

语法高亮根据词法规则为文本着色。 语义高亮基于来自语言服务的已解析符号信息丰富语法着色。

语义高亮是否可见取决于当前颜色主题。每个主题都可以配置是否显示语义高亮以及如何设置语义标记的样式。

如果启用了语义高亮并且颜色主题定义了相应的样式规则,则可以看到不同的颜色和样式。

语义高亮可以根据以下内容更改颜色:

  • 符号的已解析类型:命名空间、变量、属性、变量、类、接口、类型参数。
  • 变量/属性是否为只读 (const) 或可修改。
  • 变量/属性类型是否可调用(函数类型)。

后续步骤

请继续阅读以了解以下内容: