Skip to content

Commit 087d787

Browse files
committed
#19 - TypeScript
1 parent df588f9 commit 087d787

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
const DaysOfWeek: { [key: number]: string } = {
2+
1: "Monday",
3+
2: "Tuesday",
4+
3: "Wednesday",
5+
4: "Thursday",
6+
5: "Friday",
7+
6: "Saturday",
8+
7: "Sunday"
9+
};
10+
11+
function getDayName(dayNumber: number): string {
12+
return DaysOfWeek[dayNumber] || "Invalid day number";
13+
}
14+
15+
console.log(getDayName(1));
16+
console.log(getDayName(7));
17+
console.log(getDayName(8));
18+
19+
// ** Extra Exercise ** //
20+
const OrderStatus = {
21+
PENDING: "pending",
22+
SENT: "sent",
23+
DELIVERED: "delivered",
24+
CANCELED: "canceled"
25+
} as const;
26+
27+
class Order {
28+
id: number;
29+
status: typeof OrderStatus[keyof typeof OrderStatus];
30+
31+
constructor(id: number) {
32+
this.id = id;
33+
this.status = OrderStatus.PENDING;
34+
}
35+
36+
sendOrder(): void {
37+
if (this.status === OrderStatus.PENDING) {
38+
this.status = OrderStatus.SENT;
39+
console.log(`Order ${this.id} has been sent.`);
40+
} else {
41+
console.log(`Order ${this.id} cannot be sent in status ${this.status}.`);
42+
}
43+
}
44+
45+
cancelOrder(): void {
46+
if (this.status === OrderStatus.DELIVERED) {
47+
console.log(`Order ${this.id} cannot be canceled, because it has already been delivered.`);
48+
} else {
49+
this.status = OrderStatus.CANCELED;
50+
console.log(`Order ${this.id} has been canceled.`);
51+
}
52+
}
53+
54+
deliverOrder(): void {
55+
if (this.status === OrderStatus.SENT) {
56+
this.status = OrderStatus.DELIVERED;
57+
console.log(`Order ${this.id} has been delivered.`);
58+
} else {
59+
console.log(`Order ${this.id} cannot be delivered in status ${this.status}.`);
60+
}
61+
}
62+
63+
showStatus(): void {
64+
console.log(`Order ${this.id} status is ${this.status}`);
65+
}
66+
}
67+
68+
const order1 = new Order(1);
69+
order1.showStatus();
70+
order1.sendOrder();
71+
order1.deliverOrder();
72+
order1.cancelOrder();
73+
74+
const order2 = new Order(2);
75+
order2.sendOrder();
76+
order2.cancelOrder();
77+
order2.showStatus();

0 commit comments

Comments
 (0)