Enums

Enums - (це скорочення від слова enumerations перелічення) ще один тип даних в TS, який дозволяє розробникам створювати набори іменованих констатн. Enums представляють собою фіксований набір значень, які не змінюються під час виконання програми, що робить наш код більш читабельним і менш схильним до помилок.

Приклад створеня enum.

main.ts
enum Priority {
  Low,
  Mid,
  High
};

Значення по дефолту, які не явно присвоюються елементам нашого enum, будуть числа від 0.

main.ts
enum Priority {
  Low,
  Mid,
  High
};

console.log(Priority.Low); // 0
console.log(Priority.Mid); // 1

Звісно ж ми можемо змінювати дефолтні значення на числа або стрічки.

main.ts
enum Priority {
  Low = 1,
  Mid,
  High
};

console.log(Priority.Low); // 1
console.log(Priority.Mid); // 2

Зверніть увагу, що ми змінили лише значення першого елемента нашого enum, проте, наступні елементи, змінили його автоматично, так як enum - це перелічення.

Розглянемо приклад зі стрічками.

main.ts
enum Priority {
  Low = 'low',
  Mid = 'mid',
  High = 'high'
};

console.log(Priority.Low); // "low"
console.log(Priority.Mid); // "mid"

// Такий варіант видасть нам помилку
enum Direction {
  Up = 'up',
  Down, // ERROR: Enum member must have initializer.
  Left,
  Right,
};

Приклади виколистання

Один з прикладів використання Enum, це коли нам потрібно вказати не просто тип даних для якоїсь змінної, наприклад string чи number, а ми хочемо з акцентувати, що ми повинні сюди передати лише деякі конкретні виділені слова або числа.

main.ts
enum TooltipPosition {
  Top = 'top',
  Bottom = 'bottom',
  Left = 'left',
  Right = 'right',
};

function setTooltipPosition(position: TooltipPosition): void {
  switch (position) {
    case TooltipPosition.Top:
      console.log(`Position ${TooltipPosition.Top}`);
      break;
    case TooltipPosition.Bottom:
      console.log(`Position ${TooltipPosition.Bottom}`);
      break;
    case TooltipPosition.Left:
      console.log(`Position ${TooltipPosition.Left}`);
      break;
    case TooltipPosition.Right:
      console.log(`Position ${TooltipPosition.Right}`);
      break;
  }
}

setTooltipPosition('top'); // ERROR: Argument of type '"top"' is not assignable to parameter of type 'TooltipPosition'.
setTooltipPosition(TooltipPosition.Top); // "Position top" 

Як видно з даного прикладу, enum дозволяє нам конкретизувати значення яке ми очікуємо а також, помістивжи його в змінну, що позитивно впливає на відлагодження коду, та майбутню його підтримку чи розширення.

Корисні посилання:

TS Enums W3schools - TypeScript Enums

Last updated

Was this helpful?