Hay un problema con @typescript-eslint/no-unused-vars . Entonces, tenemos el tipo
type SomeType = (name: string) => void;
Y tenemos el error @typescript-eslint/no-unused-vars en la cadena con declaración de tipo, que dice que 'nombre' está definido pero nunca se usa .
ejemplo de uso de tipo:
export const LogSomeInfo: SomeType = (name: string) => { const a = name; console.log(a); };
O:
interface CheckboxPropsType { value: string, onClick(value: string): void }
Y eslint se rompe en la cadena onClick..., diciendo que el valor está definido pero nunca se usa. ¡Incluso si el tipo se asignó correctamente y el controlador onClick real usa el valor!
Pregunta: ¿Qué tiene de malo esta regla y por qué se activa en este caso? ¿Por qué eslint reconoce la declaración de tipo para funciones en tipos/interfaces como función normal? ¿Es un problema con mi configuración de eslint?
"eslint": "^7.7.0", "@typescript-eslint/eslint-plugin": "^3.6.1", "@typescript-eslint/parser": "^4.0.1", "eslint-config- airbnb-mecanografiado": "^9.0.0",
{ "extends": [ "airbnb-typescript", "airbnb/hooks", "plugin:react/recommended", "plugin:@typescript-eslint/recommended" ], "parser": "@typescript-eslint/parser", "parserOptions": { "ecmaFeatures": { "jsx": true }, "ecmaVersion": 2018, "sourceType": "module", "project": "./tsconfig.json" }, "settings": { "react": { "version": "detect" } }, "plugins": ["@typescript-eslint", "react-hooks", "react"], "env": { "browser": true }, "rules": { "object-curly-newline": 0, "import/named": ["error"], "indent": ["error", 4], "react/jsx-indent": ["error", 4], "comma-dangle": ["error", "never"], "import/prefer-default-export": "off", "react/jsx-fragments": "off", "arrow-body-style": "off", "object-curly-spacing": "off", "@typescript-eslint/indent": ["error", 4, {"SwitchCase": 1}], "@typescript-eslint/explicit-module-boundary-types": "off", "no-undef": "error", "react/jsx-indent-props": ["error", 4], "max-len": ["error", { "code": 120 }], "react/prop-types": "off" } }
Fuente: Soy el mantenedor del proyecto typescript-eslint
.
Si actualiza sus versiones de @typescript-eslint/parser
y @typescript-eslint/eslint-plugin
a v4.1.0, podrá usar los últimos cambios que hacen que @typescript-eslint/no-unused-vars
funcione correctamente para todos los casos.
Aparte, usar v3.x del complemento pero v4.x del analizador lo pondrá en un estado realmente extraño con un comportamiento indefinido y no compatible.
Debe asegurarse de usar siempre la misma versión de ambos paquetes, ya que cada versión se lanza al mismo tiempo.
Pregunta similar realizada anteriormente: ¿Por qué ESLint lanza 'no-unused-vars' para la interfaz de TypeScript?
Deshabilite '@typescript-eslint/no-unused-vars': 0
y en su lugar use "strict": true
, "noUnusedLocals": true
y "noUnusedParameters": true
, en tsconfig.json