Интерфейсы для управления сложной системой заказов

TypeScript Сложный interfaces

Задача «Интерфейсы для управления сложной системой заказов»

Разработайте систему типов и интерфейсов на TypeScript для обработки заказов в интернет-магазине с поддержкой различных способов оплаты, доставки и скидок. Реализуйте функцию processOrder, которая принимает объект заказа и возвращает итоговую сумму с учетом всех примененных правил. Заказ содержит список товаров (каждый с ценой и количеством), способ оплаты (card, cash, crypto) и способ доставки (pickup, courier, post). Для оплаты картой и криптовалютой действует скидка 5%, для самовывоза — скидка 10%, для курьерской доставки — наценка 15%, для почты — фиксированная стоимость 300. Скидки и наценки применяются последовательно: сначала скидка на оплату, затем скидка/наценка на доставку. Итоговая сумма округляется до двух знаков после запятой.

Формат ввода

Первая строка: количество товаров N (1 ≤ N ≤ 100). Затем N строк: название товара (строка без пробелов), цена (число с плавающей точкой), количество (целое число). Далее строка: способ оплаты (card, cash, crypto). Последняя строка: способ доставки (pickup, courier, post).

Формат вывода

Одно число — итоговая сумма с двумя знаками после запятой.

Примеры

Пример 1

ВВОД
5 5 4 3 2 1
ВЫВОД
1 2 3 4 5 10
main.ts