1
+ enum DaysOfTheWeek {
2
+ MONDAY = 1 ,
3
+ TUESDAY = 2 ,
4
+ WEDNESDAY = 3 ,
5
+ THURSDAY = 4 ,
6
+ FRIDAY = 5 ,
7
+ SATURDAY = 6 ,
8
+ SUNDAY = 7
9
+ }
10
+
11
+ const getDay : ( number : number ) => string = ( number : number ) => {
12
+ return DaysOfTheWeek [ number ]
13
+ }
14
+
15
+ console . log ( getDay ( 1 ) )
16
+
17
+
18
+ /*
19
+ * Extra
20
+ */
21
+
22
+
23
+ enum DeliveryStatus {
24
+ PENDING ,
25
+ SHIPPED ,
26
+ DELIVERED ,
27
+ CANCELLED
28
+ }
29
+
30
+ class OrderSystem {
31
+ id : number
32
+ status : DeliveryStatus
33
+ nameOfOrder : string
34
+
35
+ constructor ( id : number , nameOfOrder : string ) {
36
+ this . id = id
37
+ this . status = DeliveryStatus . PENDING
38
+ this . nameOfOrder = nameOfOrder
39
+ }
40
+
41
+ orderShipped ( ) {
42
+ if ( this . status !== DeliveryStatus . PENDING ) {
43
+ console . log ( `El pedido "${ this . nameOfOrder } " ya se ha enviado o cancelado` )
44
+ return
45
+ }
46
+ this . status = DeliveryStatus . SHIPPED
47
+ console . log ( `El pedido "${ this . nameOfOrder } " ha sido enviado` )
48
+ }
49
+
50
+ orderCancelled ( ) {
51
+ if ( this . status === DeliveryStatus . SHIPPED ) {
52
+ console . log ( `El pedido "${ this . nameOfOrder } " no se puede cancelar porque ya se ha enviado` )
53
+ return
54
+ }
55
+ if ( this . status === DeliveryStatus . CANCELLED ) {
56
+ console . log ( `El pedido "${ this . nameOfOrder } " ya se encuentra cancelado` )
57
+ return
58
+ }
59
+ if ( this . status === DeliveryStatus . DELIVERED ) {
60
+ console . log ( `El pedido "${ this . nameOfOrder } " no se puede cancelar porque ya se ha entregado` )
61
+ return
62
+ }
63
+ this . status = DeliveryStatus . CANCELLED
64
+ console . log ( `El pedido "${ this . nameOfOrder } " ha sido cancelado` )
65
+ }
66
+
67
+ orderDelivered ( ) {
68
+ if ( this . status === DeliveryStatus . CANCELLED ) {
69
+ console . log ( `El pedido "${ this . nameOfOrder } " no se puede entregar porque ha sido cancelado` )
70
+ return
71
+ }
72
+ if ( this . status === DeliveryStatus . PENDING ) {
73
+ console . log ( `El pedido "${ this . nameOfOrder } " aún no se ha enviado` )
74
+ return
75
+ }
76
+ this . status = DeliveryStatus . DELIVERED
77
+ console . log ( `El pedido "${ this . nameOfOrder } " ha sido entregado` )
78
+ }
79
+
80
+ actualStateOfOrder ( ) {
81
+ const statusMap = {
82
+ [ DeliveryStatus . PENDING ] : 'Pendiente' ,
83
+ [ DeliveryStatus . SHIPPED ] : 'Enviado' ,
84
+ [ DeliveryStatus . DELIVERED ] : 'Entregado' ,
85
+ [ DeliveryStatus . CANCELLED ] : 'Cancelado'
86
+ }
87
+ console . log ( `El estado actual del pedido "${ this . nameOfOrder } " es: ${ statusMap [ this . status ] } ` )
88
+ }
89
+ }
90
+
91
+ const burguerOrder = new OrderSystem ( 1 , 'Burguer Max' )
92
+ burguerOrder . actualStateOfOrder ( )
93
+ burguerOrder . orderShipped ( )
94
+ burguerOrder . actualStateOfOrder ( )
95
+ burguerOrder . orderDelivered ( )
96
+ burguerOrder . actualStateOfOrder ( )
97
+
98
+ const iceCreamOrder = new OrderSystem ( 2 , 'Ice cream' )
99
+ iceCreamOrder . actualStateOfOrder ( )
100
+ iceCreamOrder . orderShipped ( )
101
+ iceCreamOrder . orderCancelled ( )
102
+ iceCreamOrder . actualStateOfOrder ( )
103
+ iceCreamOrder . orderDelivered ( )
104
+ iceCreamOrder . actualStateOfOrder ( )
0 commit comments