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

编辑 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

请记住,在 TypeScript 代码中使用 JSDoc 时,不应包含类型注释。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) 还是可修改。
  • 变量/属性类型是否可调用(函数类型)或不可调用。

后续步骤

继续阅读以了解: