Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

774
Visualizações
Compruebe si el valor existe en la enumeración en TypeScript

Recibo un type = 3 y tengo que verificar si existe en esta enumeración:

 export const MESSAGE_TYPE = { INFO: 1, SUCCESS: 2, WARNING: 3, ERROR: 4, };

La mejor manera que encontré es obtener todos los valores de Enum como una matriz y usar indexOf en él. Pero el código resultante no es muy legible:

 if( -1 < _.values( MESSAGE_TYPE ).indexOf( _.toInteger( type ) ) ) { // do stuff ... }

¿Hay una forma más sencilla de hacer esto?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si desea que esto funcione con enumeraciones de cadenas, debe usar Object.values(ENUM).includes(ENUM.value) porque las enumeraciones de cadenas no se asignan de forma inversa, de acuerdo con https://www.typescriptlang.org/docs/handbook /notas-de-lanzamiento/typescript-2-4.html :

 enum Vehicle { Car = 'car', Bike = 'bike', Truck = 'truck' }

se convierte en:

 { Car: 'car', Bike: 'bike', Truck: 'truck' }

Así que solo tienes que hacer:

 if (Object.values(Vehicle).includes('car')) { // Do stuff here }

Si obtiene un error para: Property 'values' does not exist on type 'ObjectConstructor' , entonces no está apuntando a ES2017. Puede usar esta configuración tsconfig.json:

 "compilerOptions": { "lib": ["es2017"] }

O simplemente puedes hacer cualquier lanzamiento:

 if ((<any>Object).values(Vehicle).includes('car')) { // Do stuff here }
over 4 years ago · Santiago Trujillo Relatório

0

Esto funciona solo en enumeraciones basadas en números que no son constantes. Para enumeraciones constantes o enumeraciones de otros tipos, consulte esta respuesta anterior


Si usa TypeScript, puede usar una enumeración real . Luego puede verificarlo usando in .

 export enum MESSAGE_TYPE { INFO = 1, SUCCESS = 2, WARNING = 3, ERROR = 4, }; var type = 3; if (type in MESSAGE_TYPE) { }

Esto funciona porque cuando compila la enumeración anterior, genera el siguiente objeto:

 { '1': 'INFO', '2': 'SUCCESS', '3': 'WARNING', '4': 'ERROR', INFO: 1, SUCCESS: 2, WARNING: 3, ERROR: 4 }
over 4 years ago · Santiago Trujillo Relatório

0

Según sandersn, la mejor manera de hacer esto sería:

 Object.values(MESSAGE_TYPE).includes(type as MESSAGE_TYPE)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda