typescript - En funksjon som returnerer 'never' kan ikke ha en tilgjengelig slutt


Det dukker opp en merkelig feil A function returning 'never' cannot have a reachable end), på setningen : never

interface Result {
    data: string;
}
function logResult(config: Result): never {
    console.log(config.data)
}

logResult({ data: 'This is a test' });

Jeg har laget et TypeScript-lekeplass-eksempel med koden over

Hva gjør jeg galt, og hvorfor oppstår denne feilen?

Svar #1

never betyr at slutten av funksjonen aldri vil bli nådd. Denne bloggen gir en god oversikt over bruken.

I ditt tilfelle derimot, nås slutten av funksjonen din er, den returnerer bare ikke en verdi.

Du vil ha en void returtype for å indikere mangel på returnert verdi:

function logResult(config: Result): void {

Svar #2

Denne feilen oppstår fordi du avslutter en funksjon som burde "returnere" en aldri-type.

Det er 2 tilfeller hvor funksjoner bør returnere never-typen:

  1. I en uendelig løkke, f.eks. en while(true){}-type løkke
  2. En funksjon som kaster en feil f.eks function foo(){throw new Exception('Feilmelding')}

Så problemet er at du når en slutt i en funksjon som ikke burde nå en slutt.

Relaterte artikler