Демистификация преобразования перечислений в числа в TypeScript: подробное руководство

Перечисления — это мощная функция 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.