无法修复 switch 语句中缩进 case 语句的 eslint 规则

Cannot fix eslint rule on indenting case statements in switch statement

这是我的 sublime text window 的屏幕截图,显示了针对 switch / case 语句抛出的 eslint 错误。 我希望 必须缩进 4 个空格,如代码所示。

这里是 4 不同的尝试,试图通过修改我的 React 应用程序中的 .eslintrc 文件来允许缩进 4 个空格。我在谷歌上搜索了一个解决方案,看到了添加 switchCase 和 indentSwitchCase 的建议,但我的 .eslintrc 规则都是 - 间隔的,而不是驼峰式,所以我添加了所有 4 条规则以努力从 sublime 文本中删除错误但没有运气......我做错了什么?!?!

编辑:这是一个 React / MERN 应用程序,我使用 sublime text 作为我的编辑器。让我知道我是否可以分享我的 .eslintrc 文件中的任何其他内容以提供帮助!

编辑 2:我试过这个:

"indent": ["error", 4, {SwitchCase: 1}]

...但这是无效的缩进规则。 如何在不出现错误的情况下将选项对象添加到缩进规则?

我刚刚看到您对答案进行了编辑 ("EDIT 2")。

无论如何,我想准确地告诉你这个选项:

"indent": ["error", 4, { "SwitchCase": 1 }]

您为什么认为它是“无效的缩进规则”?

根据 docs,这是为 switch 语句设置所需缩进的正确方法。

"SwitchCase" (default: 0) enforces indentation level for case clauses in switch statements.

文档还提供了[四个示例]:

  • Indent of 2 spaces with SwitchCase set to 0 will not indent case clauses with respect to switch statements.
  • Indent of 2 spaces with SwitchCase set to 1 will indent case clauses with 2 spaces with respect to switch statements.
  • Indent of 2 spaces with SwitchCase set to 2 will indent case clauses with 4 spaces with respect to switch statements.
  • Indent of tab with SwitchCase set to 2 will indent case clauses with 2 tabs with respect to switch statements.

它们只是示例,未列出您的目标选项对象并不意味着它不正确。事实上它似乎是正确的:ESLint Demo.

您的用例实际上包含在 docs of the version 2.0.0 中(没有直接指向 link 的锚点,抱歉,它是文档的最后一个代码块):

/*eslint indent: [2, 4, {"SwitchCase": 1}]*/

switch(a){
    case "a":
        break;
    case "b":
        break;
}

在打字稿code-base中,使用TypeScript ESLint's @typescript-eslint/indent可以解决问题。

{
  // note you must disable the base rule as it can report incorrect errors
  "indent": "off",
  "@typescript-eslint/indent": ["error"]
}

在以下示例中,ESLint's indent 规则导致打字稿文件中出现错误。