javascript - No se puede arreglar la regla de eslint sobre la indentación de las sentencias case en una declaración switch
Aquí hay una captura de pantalla de mi ventana de Sublime Text mostrando el error de eslint que se produce para la declaración switch/case. Quiero tener que indentar 4 espacios, como muestra el código.
y aquí están 4 intentos diferentes de tratar de permitir una sangría de 4 espacios, mediante modificaciones en el archivo .eslintrc de mi aplicación react. Busqué una solución en Google y vi sugerencias de agregar tanto switchCase como indentSwitchCase, pero las reglas de mi .eslintrc están todas con guiones, no en camelcase, así que agregué las 4 reglas en un esfuerzo por eliminar el error en Sublime Text, pero sin suerte... ¿qué estoy haciendo mal?!?!
EDITAR: esta es una aplicación React/MERN y estoy usando Sublime Text como mi editor. ¡Avísame si puedo compartir algo más de mi archivo .eslintrc para ayudar!
EDICIÓN 2: Intenté esto:
"indent": ["error", 4, {SwitchCase: 1}]
...pero esta es una regla inválida para la sangría. ¿Cómo agrego un objeto de opciones a la regla de sangría sin obtener un error?
Respuesta #1
Acabo de ver que hiciste una edición ("EDICIÓN 2") en tu respuesta.
De todos modos, quería aconsejarte exactamente esa opción:
"indent": ["error", 4, { "SwitchCase": 1 }]
¿Por qué lo consideras "una regla inválida para la sangría"?
Según los documentos, esta es la forma correcta de establecer la sangría deseada para las declaraciones switch.
"SwitchCase" (por defecto: 0) aplica el nivel de sangría para las cláusulas case en las declaraciones switch.
Los documentos también proporcionan [cuatro ejemplos]:
- La sangría de 2 espacios con SwitchCase configurado en 0 no indentará las cláusulas case con respecto a las declaraciones switch.
- La sangría de 2 espacios con SwitchCase configurado en 1 hará que las cláusulas case tengan una sangría de 2 espacios con respecto a las declaraciones switch.
- La sangría de 2 espacios con SwitchCase configurado en 2 hará que las cláusulas case tengan una sangría de 4 espacios con respecto a las declaraciones switch.
- La sangría de tabulación con SwitchCase establecida en 2 sangrará las cláusulas case con 2 tabulaciones con respecto a las declaraciones switch.
Son solo ejemplos, el hecho de que su objeto de opción de destino no esté listado no significa que no sea correcto. Y de hecho, parece ser correcto: ESLint Demo.
Tu caso de uso está en realidad incluido en la documentación de la versión 2.0.0 (sin enlace directo, lo siento, está en el último bloque de código del documento):
/*eslint indent: [2, 4, {"SwitchCase": 1}]*/
switch(a){
case "a":
break;
case "b":
break;
}
Respuesta #2
En una base de código TypeScript, usar @typescript-eslint/indent de TypeScript ESLint puede resolver el problema.
{
// note you must disable the base rule as it can report incorrect errors
"indent": "off",
"@typescript-eslint/indent": ["error"]
}
En el siguiente ejemplo, la regla indent de ESLint está causando errores en un archivo TypeScript.


