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:
- I en uendelig løkke, f.eks. en
while(true){}-type løkke - 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.
