Изучение использования Enum в TypeScript: подробное руководство

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

  1. Основное объявление перечисления.
    Самый простой способ определить перечисление в TypeScript — использовать ключевое слово enum. Вот пример:
enum Color {
  Red,
  Green,
  Blue,
}
let color: Color = Color.Red;
console.log(color); // Output: 0
  1. Пользовательские значения перечисления.
    Вы можете назначать собственные значения членам перечисления. По умолчанию значения начинаются с 0, но вы можете их переопределить. Вот пример:
enum Color {
  Red = 1,
  Green = 2,
  Blue = 4,
}
let color: Color = Color.Green;
console.log(color); // Output: 2
  1. Перечисления на основе строк:
    Перечисления также могут использовать строковые значения вместо чисел. Это полезно, когда вам нужно больше описательных значений. Вот пример:
enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}
let direction: Direction = Direction.Up;
console.log(direction); // Output: "UP"
  1. Обратное сопоставление.
    Перечисления в TypeScript поддерживают обратное сопоставление, что означает, что мы можем получить имя члена перечисления из его значения. Вот пример:
enum Color {
  Red = 1,
  Green = 2,
  Blue = 3,
}
let colorName: string = Color[2];
console.log(colorName); // Output: "Green"
  1. Итерация перечисления.
    Вы можете перебирать значения перечисления, используя цикл for...in. Вот пример:
enum Color {
  Red,
  Green,
  Blue,
}
for (let color in Color) {
  console.log(color); // Output: "Red", "Green", "Blue"
}
  1. Использование перечислений в качестве типов объединения.
    Перечисления можно использовать как часть типов объединения для обеспечения соблюдения определенных значений. Вот пример:
enum Shape {
  Circle,
  Square,
}
interface Circle {
  type: Shape.Circle;
  radius: number;
}
interface Square {
  type: Shape.Square;
  sideLength: number;
}
function area(shape: Circle | Square): number {
  if (shape.type === Shape.Circle) {
    return Math.PI * shape.radius  2;
  } else {
    return shape.sideLength  2;
  }
}

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