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

160
Vistas
Reemplazar condiciones con enumeración en Typescript

Con el siguiente código original, es una función que, basada en el valor de toCheck , está construyendo una clase css:

 const computeSomething = (toCheck: string) => { return clsx('flex', { 'flex-start': toCheck === 'FIRST', 'flex-end': toCheck === 'LAST' }); }

El requisito es usar enum para toCheck , probé algo pero probablemente esté mal:

 export enum toCheck { FIRST = 'FIRST', LAST = 'LAST' } const computeSomething = (toCheck: string) => { return clsx('flex', { 'flex-start': toCheck.FIRST, 'flex-end': toCheck.LAST }); }

El error dice:

La propiedad 'FIRST' no existe en el tipo 'string'.

¿Algunas ideas?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Está sombreando la enumeración usando el mismo nombre para su parámetro. Use un nombre diferente para la enumeración y el parámetro para evitarlo. El caso idiomático para las enumeraciones es PascalCase .

Después de eso, solo use un genérico que amplíe el tipo de enumeración y no debería tener problemas:

Enlace de juegos TS

 declare function clsx (...args: unknown[]): void; enum ToCheck { FIRST = 'FIRST', LAST = 'LAST', } const computeSomething = <T extends typeof ToCheck>(toCheck: T) => { return clsx('flex', { 'flex-start': toCheck.FIRST, 'flex-end': toCheck.LAST }); } computeSomething(ToCheck); // ok
about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema es que su toCheck no se refiere a la enumeración (prevista) debido a que su parámetro tiene el mismo nombre ( toCheck: string ). Cambiar el nombre de cualquiera debería resolver el problema:

 export enum ToCheckEnum { FIRST = 'FIRST', LAST = 'LAST' } const computeSomething = (toCheck: string) => { return clsx('flex', { 'flex-start': ToCheckEnum.FIRST, 'flex-end': ToCheckEnum.LAST }); }

La convención es que enum/type debe tener el caso de Pascal, así que creo que es mejor de esta manera.

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Por qué pasas toCheck como argumento? Solo haz esto:

 export enum ToCheckEnum { FIRST = 'FIRST', LAST = 'LAST' } const computeSomething = (toCheck: ToCheckEnum) => { return clsx('flex', { 'flex-start': toCheck === ToCheckEnum.FIRST, 'flex-end': toCheck === ToCheckEnum.LAST }); }
about 4 years ago · Juan Pablo Isaza 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