noImplicitReturns
Każda ścieżka albo żadna
Funkcja, w której część gałęzi zwraca wartość, a inne wypadają na koniec, to prawie zawsze brakujący przypadek.
- Od
- TypeScript 2.0
- strict
- Poza strict
- W twoim tsconfigu
"noImplicitReturns": true
Ten sam fragment za każdym razem. Zmieniła się tylko opcja.
Z wyłączoną
"noImplicitReturns": falseexport function grade(n: number) { if (n > 50) { return 'pass' } }
Kompiluje się czysto
Z włączoną
"noImplicitReturns": trueexport function grade(n: number) { if (n > 50) { return 'pass' } }
Zgłasza TS7030
Dlaczego kompilator się tym przejmuje
Bez adnotacji kompilator wnioskuje `string | undefined` i wszystko poniżej dziedziczy dziurę, więc błąd zgłaszany jest — o ile w ogóle — gdzieś daleko od miejsca, w którym powstał. Ta flaga zgłasza go tutaj. Dotyczy kształtu funkcji, a nie typu wyniku — dlatego łapie zarówno przypadek, który wychwyciłby jawny typ zwracany, jak i ten, w którym nigdy go nie napisałeś.
Wniosek
Wyczerpujący switch zwracający z każdego przypadku spełnia ją bez końcowego return.
Gdzie iść dalej
Opcji: 22

