A cart summary combines typed items, a discount rule, and formatted output.

Cart Total Case

cart.ts
type CartItem = {
    name: string;
    cents: number;
    quantity: number;
};

function cartTotal(items: CartItem[], discountCents: number): number {
    let total: number = 0;

    for (const item of items) {
        total += item.cents * item.quantity;
    }

    return Math.max(0, total - discountCents);
}

const discountCents: number = ;
const items: CartItem[] = [
    { name: "book", cents: 1200, quantity: 1 },
    { name: "pen", cents: 200, quantity: 3 }
];
const total: number = cartTotal(items, discountCents);

console.log(`cart=${total}`);
type CartItem = {
    name: string;
    cents: number;
    quantity: number;
};

function cartTotal(items: CartItem[], discountCents: number): number {
    let total: number = 0;

    for (const item of items) {
        total += item.cents * item.quantity;
    }

    return Math.max(0, total - discountCents);
}

const discountCents: number = ;
const items: CartItem[] = [
    { name: "book", cents: 1200, quantity: 1 },
    { name: "pen", cents: 200, quantity: 3 }
];
const total: number = cartTotal(items, discountCents);

console.log(`cart=${total}`);
case study A small case study shows several TypeScript pieces working together around one data flow.