TypeScript er en utvidelse av JavaScript som gir ekstra funksjonalitet for å skrive kode med sterkere typesjekk.
Ved å bruke TypeScript kan du identifisere og rette feil på et tidligere stadium i utviklingsprosessen. En av de essensielle funksjonene i TypeScript er Enums (oppregninger). En Enum er en populær konstruksjon i TypeScript som bidrar til å skrive mer pålitelig kode.
I denne artikkelen skal vi utforske Enums, hvordan de opprettes og brukes, samt andre viktige aspekter du bør vurdere.
Hva er en Enum?
Enum er en forkortelse for oppregnet type. En oppregnet datatype defineres av de ulike verdiene en variabel av den typen kan anta. De forskjellige verdiene kalles ofte medlemmer eller elementer.
I denne artikkelen vil vi referere til dem som medlemmer. Enums er ikke unikt for TypeScript; oppregnede typer finnes også og brukes i andre programmeringsspråk. Bruken av enums forbedrer typesikkerheten i TypeScript-programmer.
Les også: Viktige TypeScript-biblioteker og runtime for utviklere
Hvorfor bruke Enums?
Enums gir deg muligheten til å angi hvilke verdier en variabel kan inneholde. De gjør det også mulig å definere de tillatte verdiene for funksjonsargumenter. Dette sikrer at utviklere konsekvent gir forventede verdier til variabler og funksjoner, noe som reduserer feil og bidrar til å skrive sikrere og mer robust kode.
Forutsetninger for å jobbe med Enums
I denne veiledningen vil vi demonstrere hvordan du jobber med enums i TypeScript. For å følge med, må du være i stand til å kjøre TypeScript-kode.
Dette krever at Node.js er installert for å kjøre JavaScript-koden. Hvis du mangler TypeScript, gir videoen nedenfor en guide til installasjon.
Alternativt kan du bruke ts-node for å kompilere og kjøre skript umiddelbart. Selv om dette er metoden vi skal bruke i denne artikkelen, anbefales det å installere TypeScript for større prosjekter. For å kjøre et skript med ts-node, bruk følgende kommando:
npx ts-node <scriptnavn>
Denne artikkelen forutsetter også at du har grunnleggende kunnskap om JavaScript og TypeScript.
Arbeide med en enkel enum
Hvordan lage en enkel enum
Enums i TypeScript opprettes ved hjelp av nøkkelordet `enum`. Deretter følger navnet på enumen og en liste over medlemmene. Her er et eksempel som definerer en enum for de fire kompassretningene:
enum Direction { North, East, South, West }
Legg merke til at medlemmene i oppregningen ikke er omgitt av anførselstegn – de er ikke strenger.
Hvordan bruke en enkel enum
Du tilordner en oppregnet verdi til en variabel på følgende måte:
const heading: Direction = Direction.North;
Siden vi tildeler verdien til variabelen ved deklarasjon, kan TypeScript utlede datatypen. Derfor trenger vi ikke eksplisitt å angi typen. I stedet kan vi skrive dette:
const heading = Direction.North;
For å se verdien til `heading` variabelen, kan vi bruke `console.log`.
console.log(heading);
Dette vil resultere i:
0
`heading` variabelen inneholder verdien null, selv om vi tildelte `Direction.North` til den. Dette skyldes at hvert medlem tildeles en numerisk verdi ved opprettelsen av enums. Det første medlemmet får verdien 0, det andre 1, og så videre. Her er en demonstrasjon:
console.log(Direction.North, Direction.East, Direction.South, Direction.West)
Følgelig kan du sjekke om `heading` variabelen inneholder nord ved å teste om den er lik null. For eksempel:
// Sjekker likhet let isNorth = heading == 0; // Skriver ut resultatet console.log(isNorth);
Som tidligere vist er `Direction.North` lik 0. I stedet for å sjekke om `heading` er lik null, kan vi sjekke om den er lik `Direction.North`.
// Sjekker om retningen er nord isNorth = heading == Direction.North; // Skriver ut resultatet console.log(isNorth);
Dette er nyttig, og det er sannsynligvis slik du vil bruke oppregnede verdier. Men du kan gjøre mer, som du vil se senere. Den neste delen skal diskutere hvordan du kan jobbe med egendefinerte verdier.
Arbeid med egendefinerte verdier
Når du lager en enum, tildeler TypeScript automatisk numeriske verdier til medlemmene fra null. Du kan imidlertid ønske at medlemmene dine skal ha egendefinerte verdier i stedet for standardverdiene. I så fall kan du tilordne dem. Slik:
enum StarRating { VeryPoor = 1, Poor = 2, Average = 3, Good = 4, Excellent = 5 }
Alternativt kan du gjøre følgende:
enum StarRating { VeryPoor = 1, Poor, Average, Good, Excellent }
I dette tilfellet vil det første medlemmet bli tildelt verdien 1. De påfølgende medlemmene vil automatisk øke fra den forrige verdien. Så `Poor` vil ha verdien 2, `Average` verdien 3, og så videre.
Valg i en enum har ikke alltid numeriske verdier, som du vil se senere. De med numeriske verdier vil imidlertid oppføre seg som vanlige tall.
console.log(typeof StarRating.Average);
Dette vil skrive ut «nummer». Dette betyr at du kan utføre alle talloperasjoner, inkludert sammenligninger, som:
console.log(StarRating.Excellent > StarRating.Average)
Dette vil skrive ut «true».
Bruke strenger som egendefinerte verdier
Som nevnt tidligere, kan enum-valg ha strengverdier i stedet for bare tall. Slik gjør du det:
enum Choice { RedPill = "Know Everything", BluePill = "Know Nothing" }
I dette tilfellet vil enum-valgene oppføre seg som de forrige. Men siden verdiene er strenger, kan du utføre strengoperasjoner, ikke talloperasjoner, som i det forrige eksemplet.
Heterogene enums
Du kan også blande streng- og numeriske verdier. Dette anbefales ikke og er ikke spesielt nyttig, men det er likevel mulig.
enum Mixed { First = "String", Second = 2 }
Siste ord
I denne artikkelen har vi gjennomgått hva enums i TypeScript er. Vi har også diskutert hvorfor de er viktige og de forskjellige typene verdier medlemmene kan ha.
Deretter kan du lese vår artikkel om Type vs. Interface i TypeScript.