Як використовувати Enums у TypeScript крок за кроком

Enums у TypeScript — це спосіб визначення набору іменованих констант, які можна використовувати для представлення колекції пов’язаних значень. Вони роблять код більш читабельним і зручним для обслуговування, даючи цим значенням зрозумілі назви. Цей посібник крок за кроком допоможе вам використовувати переліки у TypeScript, охоплюючи їхні типи, переваги та практичні приклади.

Що таке Enum?

enum (скорочення від "enumeration") — це спеціальний тип даних у TypeScript, який дозволяє визначати набір іменованих констант. Ці іменовані константи можуть представляти числові або рядкові значення, що робить ваш код більш описовим і менш схильним до помилок.

Типи Enum у TypeScript

У TypeScript є три типи переліків:

  • Числові переліки
  • Перерахування рядків
  • Неоднорідні переліки

Числові переліки

Числові переліки є типовими у TypeScript. Вони являють собою набір іменованих значень, яким автоматично присвоюються числові значення, починаючи з 0 або з власного початкового значення, якщо вказано.

Базовий приклад числового переліку

Нижче наведено простий приклад числового переліку:

enum Direction {
  Up,
  Down,
  Left,
  Right
}

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

У цьому прикладі перелік Direction має чотири елементи: Up, Down, Left і Right. За замовчуванням Up присвоюється значення 0, Down1 і так далі. Ви також можете вказати власні числові значення для учасників.

Числовий перелік із настроюваними значеннями

Ви можете призначити власні значення членам enum:

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

У цьому прикладі New встановлено на 1, InProgress автоматично встановлено на 2, Done встановлено на 5, а Cancelled автоматично встановлюється на 6.

Перерахування рядків

Рядкові переліки — це ще один тип переліків, де кожен член ініціалізується рядковим літералом, що робить їх більш читабельними та легшими для налагодження.

Приклад базового рядка Enum

Нижче наведено приклад рядкового переліку:

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

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

У цьому прикладі кожен член enum ініціалізується рядковим значенням. На відміну від числових переліків, рядкові переліки не мають автоматичного збільшення значень.

Неоднорідні переліки

Гетерогенні переліки — це переліки, які містять як рядкові, так і числові елементи. Хоча їх можна визначити, зазвичай це не рекомендується, оскільки це може призвести до плутанини та помилок у коді.

Приклад гетерогенного переліку

Ось приклад різнорідного переліку:

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

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

У цьому прикладі MixedEnum містить як рядкові, так і числові значення. Використовуйте такі переліки обережно, оскільки вони можуть викликати плутанину.

Випадки використання Enum

Переліки корисні в різних сценаріях:

  • Представляє набір пов’язаних констант, наприклад напрямки (вгору, вниз, ліворуч, праворуч).
  • Визначення станів у кінцевому автоматі (Нове, Виконується, Готово, Скасовано).
  • Використовуйте їх у операторах зміни регістру для кращої читабельності.

Enum у прикладі Switch-Case

Використання переліків у операторі switch-case покращує читабельність коду та полегшує керування станами.

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."

У цьому прикладі оператор switch-case більш читабельний і менш схильний до помилок завдяки використанню переліків.

Висновок

Enums у TypeScript забезпечують потужний спосіб визначення набору іменованих констант, покращуючи читабельність коду та безпеку типів. Використовуючи числові, рядкові або навіть різнорідні переліки, ви можете краще керувати та впорядковувати свій код. Завдяки цьому покроковому посібнику ви тепер маєте знати, як користуватися переліками у TypeScript, щоб зробити ваш код чистішим і зручнішим для обслуговування.