Преобразование перечисления TypeScript в массив: методы и примеры кода

Перечисления или перечисления в TypeScript позволяют разработчикам определять набор именованных констант. Хотя перечисления полезны для организации и категоризации данных, существуют сценарии, в которых вам может потребоваться преобразовать перечисление в массив для упрощения манипуляций или итераций. В этой статье мы рассмотрим различные методы преобразования перечисления TypeScript в массив, а также приведем примеры кода для каждого метода.

Методы преобразования перечисления TypeScript в массив:

Метод 1: Object.values()
Один из самых простых способов преобразования перечисления в массив — использование метода Object.values(). Этот метод возвращает массив значений перечисления.

enum Colors {
  Red,
  Green,
  Blue,
}
const colorsArray = Object.values(Colors);
console.log(colorsArray); // Output: [0, 1, 2]

Метод 2: Object.keys() и Array.map()
Другой подход — использовать Object.keys()для получения ключей перечисления, а затем сопоставить их для получения соответствующих значений..

enum Days {
  Monday = 'MON',
  Tuesday = 'TUE',
  Wednesday = 'WED',
}
const daysArray = Object.keys(Days).map(key => Days[key]);
console.log(daysArray); // Output: ['MON', 'TUE', 'WED']

Метод 3: пользовательская служебная функция
Вы также можете создать собственную служебную функцию для преобразования перечисления в массив. Эта функция перебирает ключи перечисления и получает соответствующие значения.

enum Sizes {
  Small = 1,
  Medium = 2,
  Large = 3,
}
function enumToArray<T>(enumObject: T): Array<T[keyof T]> {
  return Object.keys(enumObject)
    .filter(key => isNaN(Number(key)))
    .map(key => enumObject[key]);
}
const sizesArray = enumToArray(Sizes);
console.log(sizesArray); // Output: [1, 2, 3]

Метод 4: размышления над перечислением
Этот метод использует возможности отражения TypeScript для извлечения значений перечисления.

enum Status {
  Active = 'ACTIVE',
  Inactive = 'INACTIVE',
  Pending = 'PENDING',
}
const statusArray = (Reflect as any).getEnumValues(Status);
console.log(statusArray); // Output: ['ACTIVE', 'INACTIVE', 'PENDING']

Преобразование перечисления TypeScript в массив обеспечивает гибкость и удобство при работе со значениями перечисления. В этой статье мы рассмотрели четыре различных метода достижения этой цели, включая использование встроенных методов, таких как Object.values()и Object.keys(), создание пользовательских служебных функций и использование возможностей отражения TypeScript. Используя эти методы, вы можете легко преобразовывать перечисления в массивы и выполнять над ними различные операции.