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'