Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

278
Views
Comparar el valor con la enumeración no es obvio en TypeScript

Tengo un código muy sencillo:

 enum Color { BLUE, RED } class Brush { color: Color constructor(values) { this.color = values.color } } let JSON_RESPONSE = `{"color": "BLUE"}` let brush = new Brush(JSON.parse(JSON_RESPONSE))

Ahora quiero hacer una comprobación:

 console.log(brush.color === Color.BLUE)

Y devuelve false .

Probé algunas combinaciones como

 brush.color === Color[Color.BLUE]

Pero, por supuesto, tiene un error de compilación.

La pregunta es cómo hacer una comparación bastante básica enum === enum ?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El problema es que las enum de TypeScript son en realidad "constantes numéricas con nombre".

De la documentación de TypeScript en enum s :

Las enumeraciones nos permiten definir un conjunto de constantes numéricas con nombre.

El cuerpo de una enumeración consta de cero o más miembros de enumeración. Los miembros de la enumeración tienen un valor numérico ( sic ) asociado con ellos . . .

En su lugar, debería usar tipos de literales de cadena :

 type Color = "BLUE" | "RED";


Código completo ( ver demostración ):

 type Color = "BLUE" | "RED"; class Brush { color: Color constructor(values) { this.color = values.color } } let JSON_RESPONSE = `{"color": "BLUE"}` let brush = new Brush(JSON.parse(JSON_RESPONSE)) console.log(brush.color === "BLUE"); //=> true
over 4 years ago · Santiago Trujillo Report

0

Una alternativa ( disponible desde TS 2.4 ) son las enumeraciones de cadenas :

 enum Color { BLUE = "BLUE", RED = "RED" } console.log('BLUE' === Color.BLUE); // true

Como no hay un mapeo inverso para las enumeraciones de cadenas (al menos en 2020), uno podría considerar seriamente incluirlas con el modificador const .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!