Skip to content

Commit 13a525c

Browse files
committed
#19 - ts
1 parent ba3a2ba commit 13a525c

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
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

Comments
 (0)