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

配置VSCode与ts-standard时的缩进问题求助

解决ts-standard与VSCode自动格式化的缩进规则冲突问题

问题分析

当前配置下,VSCode保存时会将装饰器和字段统一缩进为2个空格,但ts-standard的@typescript-eslint/indent规则要求字段缩进4个空格,同时你希望装饰器保持2个空格缩进,导致规则冲突报错。

解决方案

1. 调整VSCode工作区配置,确保使用ESLint格式化并对齐缩进设置

修改项目的.vscode/settings.json,配置如下:

{
  "standard.engine": "ts-standard",
  // 指定ESLint为默认格式化工具
  "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  "editor.formatOnSave": true,
  // 开启保存时自动修复ESLint错误
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // 设置编辑器基础缩进为4个空格
  "editor.insertSpaces": true,
  "editor.tabSize": 4
}

2. 自定义ESLint规则,允许装饰器使用2个空格缩进

在项目根目录创建或修改.eslintrc.json,继承ts-standard规则并覆盖缩进配置:

{
  "extends": ["ts-standard"],
  "rules": {
    "@typescript-eslint/indent": [
      "error",
      4,
      {
        // 让装饰器缩进比目标元素少一个级别(即2个空格,基于基础4空格的一半)
        "decoratorIndentation": "outer",
        "ignoredNodes": []
      }
    ]
  }
}

3. 验证配置

保存上述文件后,打开你的TypeScript文件并保存,此时字段会自动缩进为4个空格,装饰器保持2个空格缩进,同时不会触发@typescript-eslint/indent错误。

关键说明

  • editor.defaultFormatter指定用ESLint格式化,避免VSCode内置格式化工具或其他插件与ts-standard规则冲突。
  • decoratorIndentation: "outer"配置会让装饰器的缩进级别比它修饰的类/属性少一级,结合基础4空格的设置,正好实现装饰器2空格、字段4空格的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:07:35