Справочник валют через satisfies и суммы по валютам
Условие
Справочник валют объявлен через satisfies, чтобы одновременно проверить форму и сохранить литеральные ключи:
const CURRENCIES = { RUB: { symbol: '₽', minor: 2 }, USD: { symbol: '$', minor: 2 }, JPY: { symbol: '¥', minor: 0 } } satisfies Record<string, { symbol: string; minor: number }>.
Выведи тип Currency = keyof typeof CURRENCIES и напиши totals(items: readonly { amount: number; currency: Currency }[]): string[]: суммы в минимальных единицах по валютам, отформатированные как <сумма в основных единицах с minor знаками> <symbol>, в порядке ключей справочника, только встретившиеся валюты. Например 12345 RUB → 123.45 ₽, 500 JPY → 500 ¥.
Примеры
totals([{"amount":12345,"currency":"RUB"}]) // ["123.45 ₽"]
totals([{"amount":500,"currency":"JPY"}, {"amount":100,"currency":"USD"}, {"amount":5,"currency":"RUB"}]) // ["0.05 ₽", "1.00 $", "500 ¥"]
totals([]) // []
Как подойти
Подсказки: 1
keyof typeof CURRENCIESдаёт"RUB" | "USD" | "JPY"именно благодаряsatisfies: аннотация: Record<string, ...>расширила бы ключи доstring.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Разбор суммы из формы: Result с кодами ошибок
Следующий вопрос
Деньги в копейках: branded type и делёж счёта