Перечисления — это мощная функция TypeScript, которая позволяет нам определять набор именованных констант. Однако могут возникнуть сценарии, в которых нам потребуется преобразовать значение перечисления в соответствующее ему числовое представление. В этой статье мы рассмотрим различные методы достижения этой цели в TypeScript, а также приведем примеры кода.
Метод 1: неявное преобразование
TypeScript позволяет неявно преобразовывать перечисления в числа. По умолчанию перечислениям присваиваются числовые значения, начиная с 0 и увеличивающиеся на 1. Чтобы преобразовать значение перечисления в число, просто присвойте его переменной типа Number:
enum Color {
Red,
Green,
Blue,
}
const colorNumber: number = Color.Green;
console.log(colorNumber); // Output: 1
Метод 2: явное приведение
Мы можем явно привести значение перечисления к числу, используя ключевое слово as:
enum Direction {
North = 10,
East,
South,
West,
}
const directionNumber: number = Direction.South as number;
console.log(directionNumber); // Output: 12
Метод 3: использование значений объекта
Перечисления в TypeScript представляются как объекты во время выполнения, где члены перечисления являются ключами, а соответствующие им числовые значения — значениями свойств. Мы можем извлечь числовое значение, используя синтаксис поиска объекта:
enum Status {
Active = 100,
Inactive = 200,
}
const statusNumber: number = Status['Inactive'];
console.log(statusNumber); // Output: 200
Метод 4: использование синтаксиса Enum[key]
Мы также можем использовать синтаксис Enum[key]для прямого доступа к числовому значению члена перечисления:
enum Day {
Monday = 1,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
const dayNumber: number = Day['Tuesday'];
console.log(dayNumber); // Output: 2
Метод 5: функция пользовательского преобразования
В некоторых случаях нам может потребоваться выполнить пользовательские преобразования, которые не охватываются вышеуказанными методами. Мы можем создать вспомогательную функцию для обработки таких преобразований:
enum Size {
Small = 1,
Medium = 2,
Large = 3,
}
function enumToNumber(enumObj: any, enumKey: string): number | undefined {
if (enumObj.hasOwnProperty(enumKey)) {
return enumObj[enumKey];
}
return undefined;
}
const sizeNumber: number | undefined = enumToNumber(Size, 'Medium');
console.log(sizeNumber); // Output: 2
В этой статье мы рассмотрели различные методы преобразования перечислений в числа в TypeScript. Мы обсудили неявное преобразование, явное приведение типов, значения объектов, синтаксис enum[key] и даже пользовательскую функцию преобразования. Эти методы обеспечивают гибкость и позволяют нам работать с числовыми представлениями перечислений, когда это необходимо.
Поняв эти методы, вы сможете эффективно выполнять преобразования перечислений в числа в своих проектах TypeScript.