Tengo un método llamado saveTask
type Task = string; enum Priority { Low = "Low", Medium = "Medium", High = "High", } enum Label { Low = "Low", Med = "Med", High = "High", } interface Item { task: Task; priority: Priority; } const saveTask = ({ task, priority }: Item) => { const id = Date.now(); let label: Label; if (priority === "Medium") { label = Label.Med; } else { label = priority; } // dispatch(addItem({ task, priority, id, isActive: true, label })); // handleClose(); };Aquí `priority es un valor que es igual a "Bajo", "Medio" o "Alto". Basado en la prioridad, creo una propiedad adicional llamada etiqueta. La etiqueta podría ser "Bajo", "Medio" o "Alto"
En el bloque else cuando trato de decir
etiqueta = prioridad
esto me da un error
¿Cómo podría solucionar este problema?
No es el diseño más limpio, pero puedes forzar la mano del compilador:
type Task = string; enum Priority { Low = "Low", Medium = "Medium", High = "High", } enum Label { Low = "Low", Med = "Med", High = "High", } interface Item { task: Task; priority: Priority; } const saveTask = ({ task, priority }: Item) => { const id = Date.now(); let label: Label; if (priority === Priority.Medium) { label = Label.Med; } else { label = Label[Priority[priority] as keyof typeof Label]; } console.log(label); }; saveTask({task: 'test', priority: Priority.Low}); // "Low" saveTask({task: 'test', priority: Priority.Medium}); // "Med" saveTask({task: 'test', priority: Priority.High}); // "High"