Przejdź do treści
webtype.orgwebtype.orgtsconfig

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    tsconfig

    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": false
    export function grade(n: number) {
      if (n > 50) {
        return 'pass'
      }
    }

    Kompiluje się czysto

    Z włączoną

    "noImplicitReturns": true
    export 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