TypeScript: Typ Enum

Opublikowano: 24.07.2021 - tagi: TypeScript JavaScript Typ

Typ Enum

TypeScript dostarcza typ danych często spotkany, w wielu innych językach programowania: typ wyliczeniowy Enum.

Służy on do stworzenia zbioru stałych, a każda stała z tego zbioru posiada nazwę i wartość.

Ten typ można podzielić na trzy rodzaje:

1 Typ wyliczeniowy numerczny 2 Typ wyliczeniowy ciągu znaków 3 Typ wyliczeniowy mieszany

Enum numeryczny

Typ wyliczeniowy tworzymy za pomocą słowa: enum:

enum Meal {
  Pizza,
  Pasta,
  Salad
}

Taki zapis spowoduje, że pierwszy wpis: Pizza będzie mieć wartość 0, a kolejne: 1 i 2. Czyli występuje tu zwykła inkrementacja.

Możemy napisać także tak:

enum Meal {
  Pizza = 1,
  Pasta,
  Salad
}

I tak dwa kolejne wpisy będą mieć wartość odpowiendnio: 2 i 3.

Enum ciąg znaków

W podobny sposób możemy stworzyć typ wyliczeniowy składający się z ciągu znaków:

enum Status {
  DRAFT = 'draft',
  PUBLISHED = 'published',
  PENDING = 'pending'
}

Do takiego typu możemy odwołać się na dwa sposoby:

Status.DRAFT; // draft
Status['PUBLISHED']; // published

Enum mieszany

Ten rodzaj typu wyliczeniowego jest miksem dwóch powyżej opisanych.

Przykład:

enum Animal {
  Lion = 'lion',
  Monkey = 2,
  Bird
}

Odwrotne mapowanie

Typ wyliczeniowe wspiera tzw.: odwrotne mapowanie(ang.: reverse mapping). To znaczy, że mamy dostęp do wartości typu wyliczeniowego jeśli znamy nazwę jakiegoś elementu, ale także dostęp do nazwy znając wartość.

enum Meal {
  Pizza = 1,
  Pasta,
  Salad
}

Meal.Pizza; // 1
Meal['Pasta']; // 2
Meal[3]; // Salad

Dodatkowo jeśli wywołasz:

console.log(Meal);

Otrzymasz wynik:

{
  "1": "Pizza",
  "2": "Pasta",
  "3": "Salad",
  "Pizza": 1,
  "Pasta": 2,
  "Salad": 3
}