You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中TypeScript长类型列表保存时无法自动换行格式化求助

不用Prettier实现TypeScript类型导出自动换行

问题

我的TypeScript类型导出保存后一直是单行:

export type { IRegister, ILogin, IActivation, UserExtended, SessionExtended, JWTExtended }

我想要保存后自动变成这种多行格式:

export type {
  IRegister,
  ILogin,
  IActivation,
  UserExtended,
  SessionExtended,
  JWTExtended
}

我没装Prettier,想问是不是只有Prettier能实现这个?以下是我当前的VS Code配置:

"js/ts.suggest.paths": false,
"js/ts.format.semicolons": "remove",
"[javascript][javascriptreact][typescript][typescriptreact]": {
  "editor.tabSize": 2,
  "js/ts.suggest.enabled": true,
  "js/ts.preferences.quoteStyle": "single",
  "editor.defaultFormatter": "vscode.typescript-language-features",
  "js/ts.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": true,
  "js/ts.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true,
  "editor.codeActionsOnSave": {
    "source.fixAll": "explicit"
  },
}

答案

当然不是只有Prettier能做到,VS Code内置的TypeScript语言服务本身就支持这个格式化规则,你只需要在现有配置里添加几个设置项:

需要添加的配置

在你的[javascript][javascriptreact][typescript][typescriptreact]配置块里,加入以下内容:

"typescript.format.placeOpenBraceOnNewLineForObjectLiteral": true,
"editor.wordWrapColumn": 80,
"typescript.format.insertSpaceAfterCommaDelimiter": true

更新后的完整配置

"js/ts.suggest.paths": false,
"js/ts.format.semicolons": "remove",
"[javascript][javascriptreact][typescript][typescriptreact]": {
  "editor.tabSize": 2,
  "js/ts.suggest.enabled": true,
  "js/ts.preferences.quoteStyle": "single",
  "editor.defaultFormatter": "vscode.typescript-language-features",
  "js/ts.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": true,
  "js/ts.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": true,
  "editor.codeActionsOnSave": {
    "source.fixAll": "explicit"
  },
  "typescript.format.placeOpenBraceOnNewLineForObjectLiteral": true,
  "editor.wordWrapColumn": 80,
  "typescript.format.insertSpaceAfterCommaDelimiter": true
},

配置说明

  • typescript.format.placeOpenBraceOnNewLineForObjectLiteral: 控制对象字面量(包括类型导出的大括号)的左大括号换行,同时让每个成员单独占一行
  • editor.wordWrapColumn: 设置行宽阈值,当单行代码超过这个宽度时,内置格式化器会自动触发换行
  • typescript.format.insertSpaceAfterCommaDelimiter: 确保每个逗号后有空格,让多行格式更整齐

保存配置后,下次保存TS文件时,类型导出就会自动变成你想要的多行格式了。

内容的提问来源于stack exchange,提问作者flyingduck92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 08:07:32