Enum: тип перечисления в TypeScript

В этом руководстве вы узнаете о типе перечисления Enum в TypeScript и о том, как его эффективно использовать.

Что такое перечисление

Перечисление — это группа именованных постоянных значений. Enum означает перечисляемый тип.

Чтобы определить перечисление, выполните следующие действия:

  • Сначала используйте ключевое слово enum, за которым следует имя перечисления.
  • Затем определите постоянные значения для перечисления.

Ниже показан синтаксис для определения перечисления:

enum name {constant1, constant2, ...};

В этом синтаксисе constant1, constant2 и т. д. также известны как члены перечисления.

Пример типа перечисления TypeScript

В следующем примере создается перечисление, представляющее месяцы года:

enum Month {
    Jan,
    Feb,
    Mar,
    Apr,
    May,
    Jun,
    Jul,
    Aug,
    Sep,
    Oct,
    Nov,
    Dec
};

В этом примере имя перечисления — Month, а постоянные значения — Jan, Feb, Mar и т. д.

Далее объявляется функция, использующая перечисление Month в качестве типа параметра month :

function isItSummer(month: Month) {
    let isSummer: boolean;
    switch(month) {
        case Month.Jun:
        case Month.Jul:
        case Month.Aug:
            isSummer = true;
            break;
        default:
            isSummer = false;
            break;
    }
    return isSummer;
}

И вы можете назвать это так:

console.log(isItSummer(Month.Jun)); // true

В этом примере используются постоянные значения, включая Jan, Feb, Mar, … в перечислении, а не магические значения, такие как 1, 2, 3,… Это делает код более очевидным.

Как работает перечисление TypeScript

Хорошей практикой является использование в коде постоянных значений, определенных перечислениями.

Однако в следующем примере функции isItSummer() передается число вместо перечисления. И это работает.

console.log(isItSummer(6)); // true

В этом примере используется число( 6 ) вместо константы, определяемой перечислением Month.

Давайте проверим сгенерированный Javascript-код перечисления Month:

И вы можете вывести в консоль переменную Month :

{
  '0': 'Jan', 
  '1': 'Feb', 
  '2': 'Mar', 
  '3': 'Apr', 
  '4': 'May', 
  '5': 'Jun', 
  '6': 'Jul', 
  '7': 'Aug', 
  '8': 'Sep', 
  '9': 'Oct', 
  '10': 'Nov',
  '11': 'Dec',
  Jan: 0,     
  Feb: 1,     
  Mar: 2,     
  Apr: 3,     
  May: 4,
  Jun: 5,
  Jul: 6,
  Aug: 7,
  Sep: 8,
  Oct: 9,
  Nov: 10,
  Dec: 11
}

Как видно из вывода, перечисление TypeScript — это объект в JavaScript. Этот объект имеет именованные свойства, объявленные в перечислении. Например, Jan — это 0, а Feb — это 1.

Сгенерированный объект также имеет числовые ключи со строковыми значениями, представляющими именованные константы.

Вот почему вы можете передать число в функцию, которая принимает перечисление. Другими словами, член перечисления является одновременно числом и определенной константой.

Указание номеров членов перечисления

TypeScript определяет числовое значение члена перечисления на основе порядка этого члена, который появляется в определении перечисления. Например, Jan принимает 0, Feb получает 1 и т. д.

Можно явно указать числа для членов перечисления следующим образом:

enum Month {
    Jan = 1,
    Feb,
    Mar,
    Apr,
    May,
    Jun,
    Jul,
    Aug,
    Sep,
    Oct,
    Nov,
    Dec
};

В этом примере константа Jan принимает значение 1 вместо 0. Feb принимает значение 2, а Mar принимает значение 3 и т. д.

Когда использовать перечисление

Вы должны использовать перечисление, когда вы:

  • Имейте небольшой набор фиксированных значений, которые тесно связаны
  • И эти значения известны во время компиляции.

Например, вы можете использовать перечисление для статуса утверждения:

enum ApprovalStatus {
    draft,
    submitted,
    approved,
    rejected
};

Затем вы можете использовать перечисление ApprovalStatus следующим образом:

const request =  {
    id: 1,
    status: ApprovalStatus.approved,
    description: 'Please approve this request'
};

if(request.status === ApprovalStatus.approved) {
    // send an email
    console.log('Send email to the Applicant...');
}

Резюме

  • Перечисление TypeScript — это группа постоянных значений.
  • Перечисление — это объект JavaScript с именованными свойствами, объявленными в определении перечисления.
  • Используйте перечисление, когда у вас есть небольшой набор фиксированных значений, которые тесно связаны и известны во время компиляции.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript