تمرين إعادة البناء
Shopping Cart Totals
أعد كتابة حساب سلة TypeScript يجمع السعر والضريبة والخصم بأرقام صحيحة.
typescript
~14 دقيقة
مبتدئ
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
interface CartItem {
sku: string;
name: string;
unitPriceHalalas: number;
quantity: number;
}
interface CartTotals {
subtotalHalalas: number;
discountHalalas: number;
taxHalalas: number;
totalHalalas: number;
}
function calculateCart(items: CartItem[], taxBasisPoints: number, discountBasisPoints: number): CartTotals {
const subtotalHalalas = items.reduce((sum, item) => sum + item.unitPriceHalalas * item.quantity, 0);
const discountHalalas = Math.round((subtotalHalalas * discountBasisPoints) / 10_000);
const taxableHalalas = subtotalHalalas - discountHalalas;
const taxHalalas = Math.round((taxableHalalas * taxBasisPoints) / 10_000);
return {
subtotalHalalas,
discountHalalas,
taxHalalas,
totalHalalas: taxableHalalas + taxHalalas,
};
}
function money(halalas: number): string {
return `${(halalas / 100).toFixed(2)} SAR`;
}
const cart: CartItem[] = [
{ sku: "COURSE-TS", name: "TypeScript Course", unitPriceHalalas: 149_00, quantity: 1 },
{ sku: "NOTEBOOK", name: "Practice Notebook", unitPriceHalalas: 25_00, quantity: 2 },
];
const totals = calculateCart(cart, 1_500, 1_000);
console.log(`Subtotal: ${money(totals.subtotalHalalas)}`);
console.log(`Discount: ${money(totals.discountHalalas)}`);
console.log(`Tax: ${money(totals.taxHalalas)}`);
console.log(`Total: ${money(totals.totalHalalas)}`);اكتب هنا