-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path11-12-localShippingRules.js
69 lines (58 loc) Β· 1.12 KB
/
11-12-localShippingRules.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* p466 μμ
*/
function localShippingRules(country) {
const data = countryData.shippingRules[country];
if (data) return new ShippingRules(data);
else throw new OrderProcessingError(-23);
}
function calculateShippingCosts(anOrder) {
// κ΄λ ¨ μλ μ½λ
const shippingRules = localShippingRules(anOrder.country);
// λ κ΄λ ¨ μλ μ½λ
}
class OrderProcessingError extends Error {
#code;
constructor(errorCode) {
super(`μ£Όλ¬Έ μ²λ¦¬ μ€λ₯ ${errorCode}`);
this.#code = errorCode;
}
get name() {
return 'OrderProcessingError';
}
get code() {
return this.#code;
}
}
/**
* μμ μ€νμ μν μμμ μ½λ
*/
class ShippingRules {
#data;
constructor(data) {
this.#data = data;
}
}
const countryData = {
shippingRules: {
kr: 'data',
},
};
const orderData = {
country: 'en',
};
const errorList = [];
/**
* μμ νΈμΆ
*/
let status;
try {
calculateShippingCosts(orderData);
} catch (e) {
if (e instanceof OrderProcessingError) {
errorList.push({ order: orderData, errorCode: e.code });
} else {
throw e;
}
}
console.log(errorList);