Skip to main content
Практика завдань

Що таке enum у TypeScript

Що таке enum?

enum (перерахування) у TypeScript — це спосіб визначити набір іменованих констант. Це робить код більш зрозумілим і запобігає розкиданню “магічних” рядків або чисел по всьому проекту.

typescript
enum Status { Pending, InProgress, Done }

Числові vs рядкові enums

За замовчуванням enums є числовими: перший елемент отримує значення 0, а кожен наступний член збільшується на 1. Ви можете переопределити початкове значення або встановити явні числа.

typescript
enum Status { Pending = 1, InProgress = 3, Done = 4 }

Рядкові enums повинні бути призначені явно:

typescript
enum Role { Admin = 'admin', User = 'user' }

Зворотне рендеринг

Для числових enums згенерований об'єкт JavaScript має зворотне рендеринг. Це означає, що ви можете отримати ім'я enum з його числового значення:

typescript
enum Status { Pending, Done } Status.Pending // 0 Status[0] // 'Pending'

Рядкові enums не мають зворотного рендеринг.

const enum

Використання const enum вказує компілятору вбудувати значення та пропустити генерацію об'єкта під час виконання. Це зменшує розмір бандлу, але усуває зворотне рендеринг.

typescript
const enum Directions { Up, Down } const move = Directions.Up // буде скомпільовано в літерал 0

Коли використовувати enums

  • Коли у вас є фіксований список станів (статуси, ролі, типи повідомлень).
  • Коли один і той же набір значень використовується в кількох місцях.
  • Коли ви хочете чистіші, самодокументовані API замість випадкових рядків/чисел.

Порада для співбесіди:

Згадайте, що enums є цукром над об'єктами, опишіть різницю між числовими та рядковими enums, і не забудьте про const enum для оптимізації.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань