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;
  • void fortæller kun brugeren, at returværdien ikke er vigtig (ignorerer typen?)
  • undefined kræver, at udvikleren eksplicit returnerer undefined
  • never var et gæt, og void (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:

  1. intet (ingen return-sætning)
  2. undefined (bemærk, at blot at kalde return; returnerer undefined)
  3. 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:

  1. kaster en fejl
  2. eller har en uendelig løkke.

Jeg føler, at du ønsker at forbyde tidlig afslutning af en funktion, men det er ikke muligt.

Relaterede artikler