File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ abstract class DeliveryItem {
2+ items: DeliveryItem[]
3+
4+ addItem(item: DeliveryItem) {
5+ this.items.push(item)
6+ }
7+
8+ getItemPrices(): number {
9+ return this.items.reduce((acc: number, i: DeliveryItem) => acc += i.getItemPrices(), 0)
10+ }
11+
12+ abstract getPrice(): number
13+ }
14+
15+ class DeliveryShop extends DeliveryItem {
16+ constructor(private delivaryFee: number) {
17+ super()
18+ }
19+
20+ getPrice(): number {
21+ return this.items.reduce((acc: number, i: DeliveryItem) => acc += i.getItemPrices(), 0) + this.delivaryFee
22+ }
23+ }
24+
25+ class Package extends DeliveryItem {s
26+ getPrice(): number {
27+ return this.getItemPrices()
28+ }
29+ }
30+
31+ class Product extends DeliveryItem {
32+ constructor(private price: number) {
33+ super()
34+ }
35+
36+ getPrice(): number {
37+ return this.price
38+ }
39+ }
40+
41+ const shop = new DeliveryShop(100)
42+ shop.addItem(new Product(1000))
43+ const pack1 = new Package()
44+ pack1.addItem(new Product(200))
45+ pack1.addItem(new Product(300))
46+ shop.addItem(pack1)
47+ const pack2 = new Package()
48+ pack2.addItem(new Product(30))
You can’t perform that action at this time.
0 commit comments