Перечисления или перечисления — это мощная функция TypeScript, позволяющая определять набор именованных констант. Перечисления позволяют организовать связанные значения и улучшить читаемость и удобство обслуживания вашего кода. В этой записи блога мы рассмотрим различные методы получения всех значений перечисления в TypeScript, сопровождаемые примерами кода.
Метод 1: перебор ключей перечисления
Один простой подход — перебор ключей объекта перечисления с использованием цикла for…in. Вот пример:
enum Colors {
Red = "RED",
Green = "GREEN",
Blue = "BLUE",
}
function getAllEnumValues(enumObject: any): string[] {
const values: string[] = [];
for (const key in enumObject) {
if (typeof enumObject[key] === "string") {
values.push(enumObject[key]);
}
}
return values;
}
const allColors = getAllEnumValues(Colors);
console.log(allColors); // Output: ["RED", "GREEN", "BLUE"]
Метод 2: использование Object.values()
Другой подход — использовать метод Object.values() для извлечения значений перечисления. Однако этот метод работает только в том случае, если вы определяете свои перечисления без присвоения клавишам строковых или числовых значений. Вот пример:
enum Sizes {
Small,
Medium,
Large,
}
const allSizes = Object.values(Sizes);
console.log(allSizes); // Output: [0, 1, 2]
Метод 3: утверждение типа с помощью ключей перечисления
TypeScript позволяет вам утверждать тип объекта, что может быть удобно для получения значений перечисления. Вот пример:
enum Days {
Monday = "MON",
Tuesday = "TUE",
Wednesday = "WED",
}
const allDays = Object.keys(Days).map(key => Days[key as keyof typeof Days]);
console.log(allDays); // Output: ["MON", "TUE", "WED"]
Метод 4: использование универсальной функции
Вы также можете создать общую функцию, которая использует операторы keyof и typeof для динамического получения всех значений перечисления. Вот пример:
function getAllEnumValues<T extends Record<string, string | number>>(enumObject: T): T[keyof T][] {
return Object.values(enumObject);
}
const allValues = getAllEnumValues(Colors);
console.log(allValues); // Output: ["RED", "GREEN", "BLUE"]
В этой статье мы рассмотрели различные методы получения всех значений перечисления в TypeScript. Независимо от того, предпочитаете ли вы перебирать ключи, использовать Object.values(), утверждение типа или универсальную функцию, эти методы обеспечивают гибкость в зависимости от вашего конкретного варианта использования. Используя эти подходы, вы можете легко получать доступ к значениям перечисления и работать с ними в своих проектах TypeScript.
Не забудьте выбрать метод, который лучше всего соответствует вашим потребностям и конкретной структуре ваших перечислений. Приятного кодирования!