Hur man använder Enums i TypeScript steg-för-steg

Enums i TypeScript är ett sätt att definiera en uppsättning namngivna konstanter som kan användas för att representera en samling relaterade värden. De gör koden mer läsbar och underhållbar genom att ge dessa värden vänliga namn. Den här guiden går igenom hur du använder enums i TypeScript steg-för-steg, och täcker deras typer, fördelar och praktiska exempel.

Vad är en Enum?

En enum (förkortning av "enumeration") är en speciell datatyp i TypeScript som låter dig definiera en uppsättning namngivna konstanter. Dessa namngivna konstanter kan representera numeriska eller strängvärden, vilket gör din kod mer beskrivande och mindre felbenägen.

Typer av uppräkningar i TypeScript

Det finns tre typer av enums i TypeScript:

  • Numeriska uppräkningar
  • String Enums
  • Heterogena uppräkningar

Numeriska uppräkningar

Numeriska uppräkningar är standard i TypeScript. De är en uppsättning namngivna värden som automatiskt tilldelas numeriska värden från 0, eller från ett anpassat startvärde om det anges.

Grundläggande numeriskt uppräkningsexempel

Nedan är ett enkelt exempel på en numerisk uppräkning:

enum Direction {
  Up,
  Down,
  Left,
  Right
}

let move: Direction = Direction.Up;
console.log(move); // Output: 0

I det här exemplet har Direction enum fyra medlemmar: Upp, Ner, Vänster och Höger. Som standard tilldelas Upp värdet 0, Ned är 1 och så vidare. Du kan också ange anpassade numeriska värden för medlemmarna.

Numerisk uppräkning med anpassade värden

Du kan tilldela anpassade värden till uppräkning av medlemmar:

enum Status {
  New = 1,
  InProgress,
  Done = 5,
  Cancelled
}

console.log(Status.New); // Output: 1
console.log(Status.InProgress); // Output: 2
console.log(Status.Done); // Output: 5
console.log(Status.Cancelled); // Output: 6

I det här exemplet är Ny satt till 1, Pågående är automatiskt inställd på 2, Klar är inställd till 5, och Avbruten ställs automatiskt in på 6.

String Enums

String enums är en annan typ av enum där varje medlem initieras med en sträng literal, vilket gör dem mer läsbara och lättare att felsöka.

Basic String Enum Exempel

Nedan är ett exempel på en stränguppräkning:

enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT"
}

let move: Direction = Direction.Left;
console.log(move); // Output: "LEFT"

I det här exemplet initieras varje enum-medlem med ett strängvärde. Till skillnad från numeriska uppräkningar har inte stränguppräkningar automatiskt inkrementerade värden.

Heterogena uppräkningar

Heterogena enums är enums som innehåller både sträng- och numeriska medlemmar. Även om det är möjligt att definiera dem, rekommenderas det i allmänhet inte eftersom det kan leda till förvirring och fel i koden.

Heterogena Enum Exempel

Här är ett exempel på en heterogen enum:

enum MixedEnum {
  Yes = "YES",
  No = 0,
  Maybe = 1
}

console.log(MixedEnum.Yes); // Output: "YES"
console.log(MixedEnum.No); // Output: 0

I det här exemplet innehåller MixedEnum både strängvärden och numeriska värden. Använd sådana uppräkningar försiktigt eftersom de kan orsaka förvirring.

Enum Användningsfall

Uppräkningar är användbara i en mängd olika scenarier:

  • Representerar en uppsättning relaterade konstanter som riktningar (Upp, Ner, Vänster, Höger).
  • Definiera tillstånd i en tillståndsmaskin (Ny, Pågående, Klar, Avbruten).
  • Använda dem i switch-case-satser för bättre läsbarhet.

Enum i ett Switch-Case Exempel

Att använda enums i en switch-case-sats förbättrar kodläsbarheten och gör det lättare att hantera tillstånd.

enum Status {
  New,
  InProgress,
  Done,
  Cancelled
}

function getStatusMessage(status: Status): string {
  switch (status) {
    case Status.New:
      return "The task is new.";
    case Status.InProgress:
      return "The task is in progress.";
    case Status.Done:
      return "The task is completed.";
    case Status.Cancelled:
      return "The task is cancelled.";
    default:
      return "Unknown status.";
  }
}

console.log(getStatusMessage(Status.InProgress)); // Output: "The task is in progress."

I det här exemplet är switch-case-satsen mer läsbar och mindre benägen för fel, tack vare att enums används.

Slutsats

Enums i TypeScript ger ett kraftfullt sätt att definiera en uppsättning namngivna konstanter, vilket förbättrar kodläsbarhet och typsäkerhet. Genom att använda numeriska, strängar eller till och med heterogena uppräkningar kan du bättre hantera och organisera din kod. Med den här steg-för-steg-guiden bör du nu vara bekväm med att använda enums i TypeScript för att göra din kod renare och mer underhållsbar.