Задача №2
Створити клас Bank, у якому зберігається масив клієнтів. Виконати такі операції:
- Вивести всіх простих клієнтів;
- Вивести всіх клієнтів GoldenClient;
- Знайти сумарну кількість грошей на рахунку;
Рішення:
Я підключив скрипт із задачі №1 для доступу до класів Client та GoldenClient.
'use strict'
console.info(
'%cЗадача №2',
'font-size: 2rem; color: royalblue; font-weight: bolder;',
)
console.info(
'Я підключив скрипт із задачі №1 для доступу до класів Client та GoldenClient',
)
//? Я підключив скрипт із задачі №1 для доступу до класів Client та GoldenClient
class Bank {
/**
* @param {Client[]} clientList
*/
constructor(clientList) {
if (!clientList.every((client) => client instanceof Client))
throw new TypeError(
`Список клієнтів має складатися з екземплярів класу ${Client.name}`,
)
this.clientList = clientList
}
get regularClientList() {
return this.clientList.filter(
(client) => client.constructor.name === Client.name,
)
}
get goldenClientList() {
return this.clientList.filter(
(client) => client.constructor.name === GoldenClient.name,
)
}
get totalMoney() {
return this.clientList.reduce(
(sum, {accountMoney}) => sum + accountMoney,
0,
)
}
}
// ---
const clients = [
new Client(101, 'Артур', 500),
new Client(102, 'Марта', 1200),
new Client(103, 'Олег', 0),
new GoldenClient(201, 'Катерина', 300, 1000, 5),
new GoldenClient(202, 'Іван', 555, 5000, 3),
new GoldenClient(203, 'Наталя', 2000, 10000, 7),
]
const royalBankOfCanada = new Bank(clients)
console.debug(royalBankOfCanada.regularClientList)
console.debug(royalBankOfCanada.goldenClientList)
console.debug(royalBankOfCanada.totalMoney)
