TS2355
Musi zwrócić wartość
A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Sygnatura obiecuje, że coś wróci, a ciało nigdy tego nie dostarcza.
Odtworzenie
function f(): number { }
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
Typ zwracany to obietnica dla każdego wołającego, a ten błąd to kompilator egzekwujący ją, zanim ktokolwiek na niej polegnie. Komunikat nazywa trzy typy, którym wolno znaczyć „nic nie wraca”, co jest też przydatnym przypomnieniem, że void i undefined to nie to samo: void mówi, że wołający ma zignorować wynik, a undefined, że wynik jest prawdziwą wartością, która akurat jest undefined.
Naprawy
- 01
function f(): number { return 1 }
Dotrzymaj obietnicy.
- 02
function f(): void { }
Albo przestań ją składać.
voidto właściwy typ zwracany dla funkcji istniejącej dla efektów, a powiedzenie tego wprost jest lepsze niż zwracanie czegoś, czego nikt nie chce.
Wniosek
Ten błąd pojawia się też, gdy zwracają tylko *niektóre* ścieżki. Jeśli zaskakuje, poszukaj gałęzi, która wypada poza koniec.

