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ć. `void` to 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.