Перечисления или перечисления в 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. Используя эти методы, вы можете легко преобразовывать перечисления в массивы и выполнять над ними различные операции.