Код Middle Базовые типы обновлено

Справочник валют через 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
  1. keyof typeof CURRENCIES даёт "RUB" | "USD" | "JPY" именно благодаря satisfies: аннотация : Record<string, ...> расширила бы ключи до string.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.