Przejdź do treści

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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

    1. 01
      function f(): number {
        return 1
      }

      Dotrzymaj obietnicy.

    2. 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.

    Błędy