Varför kastar ESLint 'no-unused-vars' för TypeScript-gränssnitt?
Så, jag har den här kodbiten i en .ts-fil:
import {MicroEventInterface} from '../Interfaces';
export default class MicroEvent implements MicroEventInterface {
// code
Och ESLint ger detta fel:
Jag har denna konfiguration för TypeScript i ESLint:
typescript: {
extends: [
'plugin:@private/private/react' // private rep with React config
],
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
'import'
],
settings: {
'import/resolver': {
'node': {
'extensions': [
'.js',
'.jsx',
'.ts',
'.tsx'
],
'moduleDirectory': [
'node_modules/',
'src/'
]
}
},
react: {
createClass: 'createClass',
pragma: 'React',
version: '0.14.9'
}
}
}
Så, allt verkar vara bra, men jag kan inte övervinna det här felet.
Några förslag?
Tack!
UPD:
Det ser ut som om jag console.log( --- , MicroEventInterface); felet försvinner. Jag tror att ESLint inte behandlar implements som faktisk användning.
Svar #1
Källa: Jag är underhållaren av typescript-eslint-projektet.
Den senaste versionen av @typescript-eslint-verktygen har nu fullständigt stöd för scopesanalys.
Så stegen för att fixa detta är nu:
- uppdatera dina versioner till minst v4.9.1 av
@typescript-eslint/parseroch@typescript-eslint/eslint-plugin - uppdatera din ESLint-version till minst v6.0.0
uppdatera din konfiguration för att använda
@typescript-eslint/no-unused-vars- Använd inte basregeln
no-unused-vars- se den här FAQ-artikeln i projektet.
- Använd inte basregeln
Start om din IDE så bör du nu se de korrekta lint-felen.
Svar #2
lägg till detta i Eslint-regler
"rules": {
"@typescript-eslint/no-unused-vars": [
2,
{
"args": "none"
}
]
}
Svar #3
Använd @typescript-eslint/no-unused-vars-experimental och stäng av @typescript-eslint/no-unused-vars.
Problemet är löst i den senare versionen (experimentell).
Exempelkonfiguration:
// .eslintrc
{
...
"rules": {
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-unused-vars-experimental": "error"
}
...
}
