Al iniciar una nueva aplicación, instalé eslint y la configuré con las siguientes configuraciones, pero cada vez que creo una enum dice que ya se había definido. Incluso cadenas sin sentido. Otros tipos de variables (const, var, let) no tienen este problema. Podría deshabilitar la regla, pero me gustaría que se aplicara en situaciones en las que realmente es cierta.
{ "root": true, "parser": "@typescript-eslint/parser", "plugins": ["@typescript-eslint"], "parserOptions": { "project": ["./tsconfig.json"], "ecmaFeatures": { "ecmaVersion": 6, "jsx": true } }, "overrides": [], "extends": [ "airbnb-typescript", "prettier", "prettier/@typescript-eslint", "plugin:@typescript-eslint/recommended-requiring-type-checking" ], "rules": { "spaced-comment": 0, "import/prefer-default-export": 0, "@typescript-eslint/no-use-before-define": 0, "@typescript-eslint/restrict-template-expressions": [ 1, { "allowBoolean": true } ], "react/jsx-props-no-spreading": "off", "react/state-in-constructor": 0, "react/require-default-props": 0, "react/destructuring-assignment": [ 1, "always", { "ignoreClassFields": true } ] } }Si es un usuario de TSLint-to-ESLint, este fue un error que ya se solucionó , por lo que volver a ejecutar el script con una versión más nueva también solucionaría el problema, o simplemente deshabilite la no-shadow y habilite @typescript-eslint/no-shadow
Si está utilizando alguna configuración pública que está haciendo un mal uso de la regla, asegúrese de informarles, la cantidad de personas que aún se encuentran con esto es algo asombrosa.
vea @typescript-eslint/no-shadow cómo usar también esta sección de preguntas frecuentes
{ // note you must disable the base rule as it can report incorrect errors "no-shadow": "off", "@typescript-eslint/no-shadow": ["error"] }La búsqueda de problemas de GitHub de TypeScript-eslint muestra que varias personas preguntan lo mismo.
La respuesta de Tadhg McDonald-Jensen es útil, pero hay una cosa que debe decirse. Escribir los siguientes elementos de configuración directamente en .eslintrc informará un error:
{ // note you must disable the base rule as it can report incorrect errors "no-shadow": "off", "@typescript-eslint/no-shadow": ["error"] }Aquí hay un ejemplo correcto con la regla de no sombra:
{ "rules": { "no-shadow": "off", "@typescript-eslint/no-shadow": ["error"] }, }Tuve un problema similar con el siguiente código en TypeScript:
export enum MyEnum { myValueOne = 'myValue', myValueTwo = 'myValueTwo', // <-- got "already declared in the upper scope” error } export class myValueTwo { constructor(){} } Desafortunadamente, ni rules ni las overrides resolvieron el problema.
{ "rules": { "no-shadow": "off", "@typescript-eslint/no-shadow": ["error"] }, "overrides": { "no-shadow": "off", "@typescript-eslint/no-shadow": ["error"] }, } Después de pasar algunas horas revisando diferentes problemas, preguntas y documentación sobre el problema, encontré los documentos oficiales de @typescript-eslint/no-shadow . Aqui esta el link
Lo que tuve que hacer es agregar opciones adicionales de ignoreTypeValueShadow en eslint para @typescript-eslint/no-shadow .
Mi configuración final para no-shadow se ve así:
{ "overrides": { "no-shadow": "off", "@typescript-eslint/no-shadow": ["error", , { "ignoreTypeValueShadow": true }] }, }