Pravidlá Eslint @typescript-eslint/naming-convention sú v konflikte s @typescript-eslint/no-unused-vars
Nastavujem eslint pre projekt v TypeScripte.
toto je toto pravidlo pre nepoužité premenné v prípade deštrukturalizácie
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_",
"ignoreRestSiblings": true,
"destructuredArrayIgnorePattern": "^_"
}
],
//ex:
// error lint
const [a, b] = ['a', 'b']
console.log(b)
// ok
const [_a, b] = ['a', 'b']
console.log(b)
ale pravidlo @typescript-eslint/naming-convention spúšťa chybu. Nepresadzoval som ho v pravidlách, ale myslím, že je pridané spolu s pluginom: "@typescript-eslint" a nechcel som ho odstraňovať.
Ako zabezpečím, aby sa jedna pravidlo neprekrývalo s druhým? Alebo existuje nejaký spôsob, ako použiť oba pravidlá
Odpoveď č. 1
@typescript-eslint/naming-convention zvyčajne nie je predvolene povolený v žiadnej z konfigurácií, ktoré typescript-eslint obsahuje. Ak je nastavený vo vašej konfigurácii, musíte rozširovať nejakú inú konfiguráciu, ktorá ho povoľuje.
Pre váš konkrétny príklad môžete preskočiť konkrétne prvky v deštrukturačnom vzore poľa jednoducho tak, že na miesto prvku dáte čiarku. Pozrite si nasledujúci príklad z deštrukturalizačného priradenia:
function f() {
return [1, 2, 3];
}
const [a, , b] = f();
console.log(a); // 1
console.log(b); // 3
const [c] = f();
console.log(c); // 1
Alebo vo vašom prípade:
const [, b] = ['a', 'b']
Všeobecnejšie však, ak chcete predponovať nepoužitú premennú podčiarkovníkom, existuje na to možnosť v pravidle @typescript-eslint/naming-convention. Napríklad:
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "variable",
"modifiers": ["unused"],
"format": ["strictCamelCase"],
"leadingUnderscore": "require"
},
]
Prispôsobte podľa svojich vlastných potrieb. Môžete to urobiť aj pre iné typy než len pre premenné, alebo nemusíte používať „strict“ camel case (rovnako ako camelCase, ale po sebe idúce veľké písmená nie sú povolené [t. j. myId je platné, ale myID nie je]), alebo môžete dovoliť podčiarkovník, ale nie je nutný. Existujú dokonca modifikátory, aby sa to vzťahovalo iba na deštrukturalizované premenné.
Okrem toho by som mal poukázať na to, že ak by toto pravidlo bolo nastavené z rozšírenej konfigurácie, jeho nastavenie vo vašej vlastnej konfigurácii by prepísalo a nahradilo pravidlo naming-convention nastavené v tej konfigurácii, namiesto toho, aby ho rozširovalo. Akékoľvek konvencie nastavené v pravidle z tejto zdieľanej konfigurácie by neboli rešpektované; ak ich chcete zachovať, museli by byť duplikované vo vašom naming-convention pravidle, okrem akýchkoľvek úprav, ktoré chcete v ňom spraviť.
