Skip to content

Enumerações (Enums)

As enumerações, ou enums, são uma característica poderosa do TypeScript que permite definir um conjunto de valores nomeados. Eles são úteis quando você tem um conjunto fixo de valores que representam algum tipo de estado ou categoria em sua aplicação, tornando o código mais legível e fácil de manter.

Criando Enums

No TypeScript, você pode definir enums usando a palavra-chave enum. Vamos começar com um exemplo básico:

typescript
enum Direction {
  Up,
  Down,
  Left,
  Right,
}

Neste exemplo, criamos um enum chamado Direction com quatro membros: Up, Down, Left, e Right. Por padrão, o TypeScript atribui valores numéricos começando de 0 para cada membro do enum. Ou seja, Direction.Up será 0, Direction.Down será 1, e assim por diante.

Usando Enums

Você pode usar enums para definir valores de variáveis ou parâmetros de função, garantindo que eles só possam assumir um dos valores definidos no enum:

typescript
let currentDirection: Direction = Direction.Up;

function move(direction: Direction) {
  console.log("Moving in direction:", direction);
}

move(currentDirection); // Output: Moving in direction: 0

Enums com Valores Personalizados

Você também pode definir enums com valores personalizados, sejam eles numéricos ou strings:

Enums Numéricos Personalizados

typescript
enum StatusCode {
  Success = 200,
  NotFound = 404,
  ServerError = 500,
}

let responseStatus: StatusCode = StatusCode.Success;
console.log(responseStatus); // Output: 200

Neste exemplo, atribuímos valores HTTP comuns a um enum StatusCode. Cada membro do enum tem um valor numérico específico.

Enums de String

Enums de string permitem atribuir strings específicas como valores de enum, o que pode ser útil para estados ou categorias mais descritivas:

typescript
enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT",
}

let currentDirection: Direction = Direction.Up;
console.log(currentDirection); // Output: UP

Enums Heterogêneos

Embora não seja uma prática comum, o TypeScript permite a criação de enums que misturam valores numéricos e strings:

typescript
enum MixedEnum {
  No = 0,
  Yes = "YES",
}

let answer: MixedEnum = MixedEnum.Yes;
console.log(answer); // Output: YES

Enums Computados e Constantes

Você também pode definir membros de enum com valores computados e constantes:

typescript
enum FileAccess {
  None, // 0
  Read = 1 << 1, // 2
  Write = 1 << 2, // 4
  ReadWrite = Read | Write, // 6
  G = "123".length, // 3
}

Aqui, usamos operações de bit para definir valores. ReadWrite é uma combinação de Read e Write, e G é definido como o comprimento da string "123".

Trabalhando com Enums

Você pode obter o nome de um membro de enum a partir de seu valor:

typescript
enum Direction {
  Up,
  Down,
  Left,
  Right,
}

let directionName: string = Direction[0];
console.log(directionName); // Output: Up

Conclusão

Enums são uma ferramenta poderosa no TypeScript para criar conjuntos nomeados de valores constantes, facilitando a escrita de código mais legível, seguro e fácil de manter. Com enums, você pode representar estados e categorias de maneira clara e garantir que as variáveis assumam apenas valores válidos predefinidos. Use-os sempre que tiver um conjunto fixo de valores que façam sentido para seu contexto de aplicação. 🚀