Tipo Enum
Definição
É uma estrutura de dados para armazenar valores constantes e imutáveis.
Esses valores são indexadas, iniciando no 0.
É possível alterar o índice de um valor no enum (se fazer isso, é obrigatório informar um inicializar em cada valor do enum):
enum Cores {
VERMELHO = 10,
AZUL = 20,
AMARELO = 30,
}
console.log(Cores.VERMELHO); // 10
console.log(Cores[10]); // VERMELHOAo declarar 2 enum com o mesmo nome, ocorre a junção dos seus valores em um único enum (merge):
enum Cores {
VERMELHO = 10,
AZUL = 20,
AMARELO = 30,
}
enum Cores {
ROXO = 40,
VERDE = 50,
}
console.log(Cores);
/*
{
'10': 'VERMELHO',
'20': 'AZUL',
'30': 'AMARELO',
'40': 'ROXO',
'50': 'VERDE',
VERMELHO: 10,
AZUL: 20,
AMARELO: 30,
ROXO: 40,
VERDE: 50
}
*/Exemplo
enum Cores {
VERMELHO,
AZUL,
AMARELO,
}
console.log(Cores);
/*
{
'0': 'VERMELHO',
'1': 'AZUL',
'2': 'AMARELO',
VERMELHO: 0,
AZUL: 1,
AMARELO: 2
}
*/
console.log(Cores.VERMELHO); // 0
console.log(Cores[0]); // VERMELHOexport enum Cores {
VERMELHO = 10,
AZUL = 20,
AMARELO = 30,
ROXO = 40,
VERDE = 50,
}
function escolherCor(cor: Cores): void {
console.log(Cores[cor]);
}
escolherCor(Cores.ROXO); // ROXOOBS
A vantagem de se utilizar enum em outras linguagens é a segurança de tipos, porém, mesmo o TypeScript tendo validações de tipos, isso não se aplica aos enum.
export enum Cores {
VERMELHO = 10,
AZUL = 20,
AMARELO = 30,
ROXO = 40,
VERDE = 50,
}
function escolherCor(cor: Cores): void {
console.log(Cores[cor]);
}
escolherCor(12345); // undefined
// ^
// |
// não ocorre nenhum erro de compilação