enum es una forma poderosa de crear un conjunto de constantes con nombre, pero tiene algunas desventajas.
Enumeraciones
Las enumeraciones son una forma de definir un conjunto de constantes con nombre. Por ejemplo, si queremos definir los días de la semana, podemos usar una enumeración.
enum Days {
MONDAY= 'Monday',
TUESDAY= 'Tuesday',
WEDNESDAY= 'Wednesday',
THURSDAY= 'Thursday',
FRIDAY= 'Friday',
SATURDAY= 'Saturday',
SUNDAY= 'Sunday',
}Constantes
En primer lugar, usemos la afirmación as const. Esto obliga a que un objeto se trate como de solo lectura e infiere tipos literales para sus propiedades:
const days = {
MONDAY: 'Monday',
TUESDAY: 'Tuesday',
WEDNESDAY: 'Wednesday',
THURSDAY: 'Thursday',
FRIDAY: 'Friday',
SATURDAY: 'Saturday',
SUNDAY: 'Sunday',
} as const;Ahora podemos derivar los tipos que necesitamos de albumTypes usando keyof y typeof. Por ejemplo, podemos obtener las claves usando keyof:
type Days = keyof typeof days; // 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY'También podemos obtener los valores usando Obj[keyof Obj]:
type Days = typeof days[keyof typeof days]; // 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday'