noUnusedParameters în TypeScript

Dă eroare pentru parametrii de funcții care nu sunt folosiți; numele care încep cu _ sunt permise.

Sintaxă
"compilerOptions": { "noUnusedParameters": true }

tsc --noUnusedParameters

Ce face noUnusedParameters

Cu noUnusedParameters, un parametru declarat și nefolosit în corpul funcției dă eroarea TS6133. De multe ori înseamnă o greșeală: ai uitat să folosești o valoare primită.

Uneori parametrul trebuie să existe doar ca să ajungi la următorul, de exemplu în map((x, i) => i). Pentru asta, pune _ la începutul numelui (_x): parametrii care încep cu _ nu sunt raportați.

Implicit este false și nu face parte din strict.

Parametri

Parametru Descriere
true Parametrii nefolosiți dau eroare (cu excepția celor care încep cu _).
false Valoarea implicită. Nu se verifică.

Exemple

Exemplul 1: Parametri nefolosiți

oras nu este folosit în salut, iar x nu este folosit în primul map. În al doilea map, _x nu dă eroare.

// tsconfig.json
{
  "compilerOptions": {
    "noUnusedParameters": true
  }
}

// index.ts
function salut(nume: string, oras: string) {
  return "Salut, " + nume;
}
const lista = ["Ana", "Ion"].map((x, i) => i);
const lista2 = ["Ana", "Ion"].map((_x, i) => i);
console.log(salut("Ana", "Iași"), lista, lista2);

Rezultat (tsc 5.9)

$ npx tsc --noEmit
index.ts(1,30): error TS6133: 'oras' is declared but its value is never read.
index.ts(4,35): error TS6133: 'x' is declared but its value is never read.

Exemplul 2: Parametri folosiți sau marcați cu _

salut folosește ambii parametri, iar la map doar poziția contează, deci primul parametru este _nume.

function salut(nume: string, oras: string): string {
  return `Salut, ${nume} din ${oras}!`;
}

const pozitii = ["Ana", "Ion", "Maria"].map((_nume, i) => i + 1);
console.log(salut("Ana", "Iași"));
console.log(pozitii);

Rezultat

Salut, Ana din Iași!
[ 1, 2, 3 ]

Greșeli frecvente

  • Să ștergi un parametru nefolosit din mijlocul listei. Parametrii de după își schimbă poziția și apelurile se strică; redenumește-l cu _.

Comenzi înrudite

  • noUnusedLocals: Dă eroare pentru variabilele locale, importurile și funcțiile declarate, dar niciodată citite.
  • strict: Pornește dintr-o singură mișcare toate verificările stricte de tipuri (strictNullChecks, noImplicitAny și celelalte).