Hvordan man skriver for at forhindre en returværdi i Typescript
Hvordan forhindrer jeg en bruger i at returnere noget fra en funktion i Typescript?
Som du kan se i dette eksempel, vil ingen af disse typer være tilstrækkelige:
type VoidReturner = () => void;
type UndefReturner = () => undefined;
type NeverReturner = () => never;
voidfortæller kun brugeren, at returværdien ikke er vigtig (ignorerer typen?)undefinedkræver, at udvikleren eksplicit returnererundefinednevervar et gæt, ogvoid(som i eksempel 1, der returnerer{}) matcher det ikke.
Svar #1
Du vil have() => void | undefined
Desværre er det muligt at snyde med ikke-anonyme funktioner ved først at tildele det til en anden type, men ellers virker det, når en bruger returnerer en værdi (implicit eller eksplicit)
Svar #2
Typescript kan hjælpe dig med at begrænse, hvilken type du kan returnere. De specifikke ting, du kan returnere, er:
void:
- intet (ingen return-sætning)
- undefined (bemærk, at blot at kalde
return;returnererundefined) - null (hvis --strictNullChecks er deaktiveret)
ikke defineret:
Du kan kun returnere undefined! Igen, det at have return; betyder blot at returnere undefined.
Dette betyder også, at alle kodeveje SKAL have en return-sætning. Du kan ikke have en kodevej uden en.
aldrig:
never er en smule speciel. Hvis en funktion har en returtype af never, må den aldrig returnere. Det kan kun ske, hvis hver kodevej i funktionen enten:
- kaster en fejl
- eller har en uendelig løkke.
Jeg føler, at du ønsker at forbyde tidlig afslutning af en funktion, men det er ikke muligt.