|
| 1 | +// Resumen sobre Enumeraciones |
| 2 | +// Las enumeraciones (Enums) en TypeScript permiten definir un conjunto de valores con nombre. |
| 3 | +// Son útiles para representar datos categóricos que tienen un número limitado de valores, como los días de la semana o el estado de un pedido. |
| 4 | + |
| 5 | +enum DiasSemana { |
| 6 | + Lunes = 1, |
| 7 | + Martes = 2, |
| 8 | + Miercoles = 3, |
| 9 | + Jueves = 4, |
| 10 | + Viernes = 5, |
| 11 | + Sabado = 6, |
| 12 | + Domingo = 7, |
| 13 | +} |
| 14 | + |
| 15 | +// Función para obtener el nombre del día a partir de un número entero |
| 16 | +function obtenerNombreDia(numeroDia: number): string { |
| 17 | + switch (numeroDia) { |
| 18 | + case DiasSemana.Lunes: |
| 19 | + return "Lunes"; |
| 20 | + case DiasSemana.Martes: |
| 21 | + return "Martes"; |
| 22 | + case DiasSemana.Miercoles: |
| 23 | + return "Miércoles"; |
| 24 | + case DiasSemana.Jueves: |
| 25 | + return "Jueves"; |
| 26 | + case DiasSemana.Viernes: |
| 27 | + return "Viernes"; |
| 28 | + case DiasSemana.Sabado: |
| 29 | + return "Sábado"; |
| 30 | + case DiasSemana.Domingo: |
| 31 | + return "Domingo"; |
| 32 | + default: |
| 33 | + return "Número de día inválido"; |
| 34 | + } |
| 35 | +} |
| 36 | + |
| 37 | +// Ejemplo de uso de la función obtenerNombreDia |
| 38 | +console.log(obtenerNombreDia(1)); // Salida: Lunes |
| 39 | +console.log(obtenerNombreDia(7)); // Salida: Domingo |
| 40 | + |
| 41 | +// Dificultad Extra: Sistema de gestión del estado de pedidos |
| 42 | +enum EstadoPedido { |
| 43 | + Pendiente = "Pendiente", |
| 44 | + Enviado = "Enviado", |
| 45 | + Entregado = "Entregado", |
| 46 | + Cancelado = "Cancelado", |
| 47 | +} |
| 48 | + |
| 49 | +class Pedido { |
| 50 | + private id: number; |
| 51 | + private estado: EstadoPedido; |
| 52 | + |
| 53 | + constructor(id: number, estado: EstadoPedido = EstadoPedido.Pendiente) { |
| 54 | + this.id = id; |
| 55 | + this.estado = estado; |
| 56 | + } |
| 57 | + |
| 58 | + public enviar(): void { |
| 59 | + if (this.estado === EstadoPedido.Pendiente) { |
| 60 | + this.estado = EstadoPedido.Enviado; |
| 61 | + } else { |
| 62 | + console.log("El pedido no se puede enviar."); |
| 63 | + } |
| 64 | + } |
| 65 | + |
| 66 | + public entregar(): void { |
| 67 | + if (this.estado === EstadoPedido.Enviado) { |
| 68 | + this.estado = EstadoPedido.Entregado; |
| 69 | + } else { |
| 70 | + console.log("El pedido no se puede entregar."); |
| 71 | + } |
| 72 | + } |
| 73 | + |
| 74 | + public cancelar(): void { |
| 75 | + if (this.estado !== EstadoPedido.Entregado) { |
| 76 | + this.estado = EstadoPedido.Cancelado; |
| 77 | + } else { |
| 78 | + console.log("El pedido no se puede cancelar."); |
| 79 | + } |
| 80 | + } |
| 81 | + |
| 82 | + public obtenerDescripcionEstado(): string { |
| 83 | + return `El estado actual del pedido ${this.id} es ${this.estado}.`; |
| 84 | + } |
| 85 | +} |
| 86 | + |
| 87 | +// Ejemplo de interacción con diferentes pedidos |
| 88 | +const pedido1 = new Pedido(1); |
| 89 | +const pedido2 = new Pedido(2); |
| 90 | + |
| 91 | +pedido1.enviar(); |
| 92 | +console.log(pedido1.obtenerDescripcionEstado()); // Salida: El estado actual del pedido 1 es Enviado. |
| 93 | + |
| 94 | +pedido1.entregar(); |
| 95 | +console.log(pedido1.obtenerDescripcionEstado()); // Salida: El estado actual del pedido 1 es Entregado. |
| 96 | + |
| 97 | +pedido2.cancelar(); |
| 98 | +console.log(pedido2.obtenerDescripcionEstado()); // Salida: El estado actual del pedido 2 es Cancelado. |
| 99 | + |
| 100 | +const pedido3 = new Pedido(3); |
| 101 | +pedido3.enviar(); |
| 102 | +pedido3.cancelar(); // Esto no debería ser posible, y se verá reflejado en el mensaje. |
| 103 | + |
| 104 | +console.log(pedido3.obtenerDescripcionEstado()); // Salida: El estado actual del pedido 3 es Enviado. |
0 commit comments