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

163
Views
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 answers
Answer question

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 Report

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 Report

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 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!