Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarar um "enum"
  2. Acessar membros
  3. Declarar membros computados
  4. Iterar um "enum"
  5. Usar enum em switch
  6. Comparando "enums"

Os enumeradores em muitas linguagens como C Java e outras, armazenam constantes como seus membros, tendo um valor associado a cada desses.

JS não tem suporte, por padrão, a declaração de enumeradores. Para tal, precisamos simular enuns por meio de objetos.

A simular um enumerador em JS, vamos utilizar um objeto que contém atributos no formato chave-valor. Essa simulação pode ser ser vista abaixo: enum:

Sintaxe
let nome_objeto = { 
    nome_membro0: valor0,
    nome_membro1: valor1,
    nome_membroN: valorN,
}

Como objetos são mutáveis, a característica de um enum ter membros como constantes não está aplicada. Para tal, fazemos uso do método freeze da classe Object para tornar um objeto em "somente-leitura".

Sintaxe
let nome_objeto = Object.freeze({ 
    nome_membro0: valor0,
    nome_membro1: valor1,
    nome_membroN: valorN,
})
Exemplo 1
let enumerador = Object.freeze({ 
    opcao0:0,
    opcao1:1,
    opcao2:2
})
Saída
-

Como resultado, podemos utilizar os membros de um objeto que simula um enumerador para atribuição de variáveis, argumento de funções/métodos e com comandos switch, por exemplo.

O acesso ao membros do nosso "Enum", é feito utilizando o operador (.) seguido do nome do membro, como pode ser visto na sintaxe abaixo:

Sintaxe
nome_enumerador.NOME_MEMBRO;
Onde
-
Exemplo 2
let enumerador = Object.freeze({ 
    OPCAO0:0,
    OPCAO1:1,
    OPCAO2:2
})

console.log(enumerador.OPCAO0)
Saída
0

Como estamos utilizando um objeto para simular um enum, podemos predefinir seus valores de forma computada, como mostrado no exemplo abaixo:

Sintaxe
let nome_objeto = Object.freeze({ 
    nome_membro0: valor0,
    nome_membro1: valor1,
    nome_membroN: valorN,
})
Exemplo 3
function funcao(param)
{
    return param*2
}

let enumerador = Object.freeze({ 
    opcao0:0,
    opcao1:1,
    opcao2:funcao(1)
})

console.log(enumerador.opcao2)
Saída
2

Para iterarmos os membros de um enum, utilizamos o comando for-of em conjunto como o método entries que retorna um iterável contendo os membros do enum.

Exemplo 5
let enumerador = Object.freeze({ 
    opcao0:0,
    opcao1:1,
    opcao2:funcao(1)
})

for (let [c, v] of Object.entries(enumerador)) {
    console.log(c,"-",v)
}
Saída
opcao0 - 0
opcao1 - 1
opcao2 - 2

Como nosso enum é um objeto, podemos utilizar seus atributos nos cases do comando comandos switch como no exemplo abaixo:

Sintaxe
switch(valor)
{
    case <nome_enumerador.nome_membro>: 
         //omitido
    break
} 
Exemplo 6
let enumerador = Object.freeze({ 
    opcao0:0,
    opcao1:1,
    opcao2:2
})

let a = 0

switch(a)
{
    case enumerador.opcao0:
        console.log(enumerador.opcao0);
    break
}
Saída
0
  1. 15/08/2025 - revisão 4 - Ajustes: pontuais, sintaxe e objetivos
  2. 04/10/2024 - revisão 3 - Versão inicial