Ce face noUnusedLocals
Cu noUnusedLocals, orice variabilă locală, import, funcție sau tip local declarat și nefolosit dă eroarea TS6133 („is declared but its value is never read”). Codul rămas după modificări iese astfel la iveală.
Variabilele al căror nume începe cu _ nu sunt iertate de această opțiune (spre deosebire de parametri). Exporturile nu contează ca locale: o funcție exportată și nefolosită în fișier nu dă eroare. Fără opțiune, editorul arată doar numele nefolosite mai estompat.
Implicit este false și nu face parte din strict. tsc --init o pune comentată, la „Style Options”. Exemplele de pe acest site sunt verificate cu --noUnusedLocals.
Parametri
| Parametru | Descriere |
|---|---|
true |
Variabilele, importurile, funcțiile și tipurile locale nefolosite dau eroare. |
false |
Valoarea implicită. Nu se verifică. |
Exemple
Exemplul 1: Import și variabilă nefolosite
readFileSync este importat degeaba, iar tva este calculat, dar nu este folosit (probabil o greșeală: totalul ar trebui să includă TVA-ul).
// tsconfig.json
{
"compilerOptions": {
"noUnusedLocals": true,
"target": "es2022",
"module": "nodenext",
"types": ["node"]
}
}
// index.ts
import { readFileSync } from "node:fs";
function total(preturi: number[]) {
const tva = 0.19;
let suma = 0;
for (const p of preturi) suma += p;
return suma;
}
console.log(total([10, 20]));
export {};
Rezultat (tsc 5.9)
$ npx tsc --noEmit
index.ts(1,1): error TS6133: 'readFileSync' is declared but its value is never read.
index.ts(4,9): error TS6133: 'tva' is declared but its value is never read.
Exemplul 2: Codul corectat
Fără import inutil, iar tva este folosit în calcul.
function total(preturi: number[]): number {
const tva = 0.19;
let suma = 0;
for (const p of preturi) suma += p;
return Math.round(suma * (1 + tva) * 100) / 100;
}
console.log(`Total cu TVA: ${total([10, 20])} lei`);
Rezultat
Total cu TVA: 35.7 lei
Greșeli frecvente
- Să pornești opțiunea în timpul dezvoltării și să te enervezi la fiecare variabilă temporară. Mulți o pornesc doar în CI sau la build, nu și în modul
--watch. - Să crezi că un nume cu
_la început scapă de eroare la variabile locale. Regula cu_se aplică doar parametrilor (noUnusedParameters) și elementelor din destructurare.
Comenzi înrudite
noUnusedParameters: Dă eroare pentru parametrii de funcții care nu sunt folosiți; numele care încep cu _ sunt permise.allowUnreachableCode: Controlează ce face tsc cu codul imposibil de atins și cu etichetele nefolosite: eroare, avertisment în editor sau nimic.strict: Pornește dintr-o singură mișcare toate verificările stricte de tipuri (strictNullChecks, noImplicitAny și celelalte).