Ce face noImplicitReturns
Dacă o funcție are return valoare pe unele ramuri, dar pe altele ajunge la final fără return, întoarce în tăcere undefined. Cu noImplicitReturns, TypeScript dă eroarea TS7030 („Not all code paths return a value”).
Fără opțiune, TypeScript deduce tipul rezultatului ca string | undefined și nu se plânge. Opțiunea te obligă să tratezi explicit fiecare caz, de obicei cu un return sau un throw la final.
Implicit este false și nu face parte din strict.
Parametri
| Parametru | Descriere |
|---|---|
true |
Fiecare ramură a unei funcții care întoarce valori trebuie să aibă return. |
false |
Valoarea implicită. |
Exemple
Exemplul 1: O ramură uitată
Pentru o notă sub 5, funcția nu ajunge la niciun return.
// tsconfig.json
{
"compilerOptions": {
"noImplicitReturns": true
}
}
// index.ts
function calificativ(nota: number) {
if (nota >= 9) {
return "Foarte bine";
} else if (nota >= 5) {
return "Promovat";
}
}
console.log(calificativ(4));
Rezultat (tsc 5.9)
$ npx tsc --noEmit
index.ts(1,10): error TS7030: Not all code paths return a value.
Exemplul 2: Toate ramurile tratate
Ultimul return acoperă notele sub 5.
function calificativ(nota: number): string {
if (nota >= 9) {
return "Foarte bine";
} else if (nota >= 5) {
return "Promovat";
}
return "Nepromovat";
}
for (const nota of [10, 7, 4]) {
console.log(nota, calificativ(nota));
}
Rezultat
10 Foarte bine
7 Promovat
4 Nepromovat
Greșeli frecvente
- Să adaugi
return undefined;la final doar ca să taci eroarea, când de fapt cazul nu ar trebui să existe. Mai clar estethrow new Error(...).
Comenzi înrudite
noFallthroughCasesInSwitch: Dă eroare când un case care conține cod trece mai departe în următorul case fără break sau return.strictNullChecks: Face din null și undefined tipuri separate: o valoare care poate lipsi trebuie verificată înainte de folosire.noUnusedLocals: Dă eroare pentru variabilele locale, importurile și funcțiile declarate, dar niciodată citite.