Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

140
Vistas
No se puede definir el mecanografiado de enumeración de cadena ya que la cadena no es asignable
enum Cat { cat1 = 'cat1', cat2 = 'cat2', cat3 = 'cat3', cat4 = 'cat4', cat5 = 'cat5' } const category: Cat = 'cat' + cat

¿Por qué recibo un error de mecanografiado para eso? cat es un número, por lo que category es una cadena. Pero quiero definir algunos valores de cadena específicos para esta variable.

 Type 'string' is not assignable to type 'Cat'.
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Supongo que desea que la categoría sea una de Cat, no la enumeración en sí. asi que

 const cat = 4; const category = Cat[`cat${cat}`] // category: Cat.cat4

Esto también le brinda seguridad al escribir si intenta acceder a un número fuera de rango. patio de juegos

 enum Cat { cat1 = 'cat1', cat2 = 'cat2', cat3 = 'cat3', cat4 = 'cat4', cat5 = 'cat5' } const cat = 4; const category = Cat[`cat${cat}`] const cat6 = 6; const category6 = Cat[`cat${cat6}`] // Property 'cat6' does not exist on type 'typeof Cat'.
about 4 years ago · Santiago Trujillo Denunciar

0

Typescript no puede garantizar que cat sea 1,2,3,4, or 5 ya que también podría ser someThingElse . Por lo tanto, debe decirle a mecanografiado que está seguro de que será del tipo Cat .

El problema aquí es que el compilador no permitirá que 'cat' + someVar se use como tipo Cat .

Tenga cuidado al usar esto, ya que esencialmente sobrescribe el error del compilador. Realmente necesitas asegurarte de que lo que sea que estés haciendo antes siempre sea un gato válido.

 enum Cat { cat1 = 'cat1', cat2 = 'cat2', cat3 = 'cat3', cat4 = 'cat4', cat5 = 'cat5', } const category: Cat = (('cat' + cat) as Cat);
 enum Cat { cat1 = 'cat1', cat2 = 'cat2', cat3 = 'cat3', cat4 = 'cat4', cat5 = 'cat5', } // this would be of however [Cat.cat1, Cat.cat2 ...] would be a lot safer. // I would generally suggest not tot use dynamic enum values like this. for (const i of [1,2,3,4,5]) { const category: Cat = (('cat' + i) as Cat); } // the compiler would allow this as well, since you ensure that you know the type is going to be if type Cat for (const i of ['dog']) { const category: Cat = (('cat' + i) as Cat); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda