TypeScript: Enums

Thiago S. Adriano
TypeScript Brasil
Published in
3 min readMay 10, 2019

Veja nesse artigo como trabalhar com Enums no TypeScript

TypeScript: Trabalhando com enums

O enum é um dos tipos do TypeScript que nos permite declarar um conjunto de valores/constantes pré-definidos. Para aqueles que já tiveram contato com alguma linguagem orientada a objetos como: C#, Java … etc, já teve a oportunidade de trabalhar com ele.

Agora para aqueles que estão tendo o seu primeiro contato com ele nesse artigo, imagine o seguinte cenário: nós precisamos definir uma variável informando cada dia da semana. Como fazer isso de uma maneira simples?

Utilizando o enum nós podemos criar uma estrutura com os dias da semana como: Segunda, Terca… e um índice para cada um deles: 1,2,3…etc.

Abaixo você tem um exemplo demonstrando um enum com os dias da semana:

Enum no TypeScript

Essa é uma das formas que nós temos de declarar um enum. E para acessar esses valores? Nós podemos buscar um registro pela sua declaração ou pelo seu valor. Abaixo você tem um exemplo com algumas das formas de se acessar esses valores.

let dia = DiaDaSemana[1]; // Segunda
let diaNumero = DiaDaSemana[dia]; // 1
let diaString= DiaDaSemana["Segunda"]; // 1

Para listar todos valores de um enum nós podemos utilizar o for:

for (let dia in DiaDaSemana) {
if (DiaDaSemana.hasOwnProperty(dia) &&
(isNaN(parseInt(dia)))) {
console.log(dia);
}
}
Resultado:
Segunda
Terca
Quarta
Quinta
Sexta
Sabado
Domingo

Bom, agora que estamos alinhados, vamos aprofundar um pouco mais nesse assunto. Nós podemos trabalhar com 3 tipos de enums:

  • Numéricos
  • Texto (String)
  • Heterogeneous

Numérico

Os enums numéricos armazenam strings com valores numéricos. Esse seria o mesmo exemplo anterior que demonstrei com os dias da semana. Para ficar mais claro, vamos criar novo exemplo numérico:

Note que nesse enum acima nós não declaramos os seus valores. Os enums numéricos são auto increment, no nosso exemplo anterior será passado o valor 0 para o primeiro registro e incremental para os próximos.

var cor = Cores[1]; // Amarelo
var corNumero = Cores[cor]; // 1
var corString= Cores["Vermelho"]; // 3

Ele também nos permite adicionar um valor maior que 0 fazer um incremental a partir dele:

Exemplo de enum TypeScript

Resultado:

console.log(Cores.Azul) // 15
console.log(Cores.Amarelo) // 16
console.log(Cores.Verde) // 17
console.log(Cores.Vermelho) //18

Nós também podemos passar valores aleatórios:

Resultado:

console.log(Cores.Azul) // 15
console.log(Cores.Amarelo) // 25
console.log(Cores.Verde) // 33
console.log(Cores.Vermelho) //48

String

Os enums strings são similares aos numéricos, a diferença que com os strings nós precisamos inicializar ele com uma string e os numéricos são auto increment como nós vimos no exemplo anterior.

Acessando esses valores:

console.log(DiaDaSemana.Sexta); //Sexta-feira
console.log(DiaDaSemana['Sabado']); //Sábado

Heterogeneous

Os enums Heterogeneous aceitam os dois valores dos exemplos anteriores: strings e números.

Como nós vimos nos outros exemplos, os enums numéricos são auto increment e aceitam um valor aleatório e os strings retornam o valor da key. Abaixo você tem um exemplo de como acessar os valores do enum Hererogeneous.ts.

Bem legal né?

Os enums são muito utilizados em cenários onde a mudança dos dados não é constante ou não mudam como: cadastro de sexo, dias da semana, cadastro de redes sociais … etc.

Bom, a ideia desse artigo era de ser algo simples e rápido com foco em demonstrar como nós podemos utilizar o Enum nos nossos códigos .ts sem medo ;)

Espero que tenham gostado e até um próximo artigo pessoal ;)

--

--