All files shoppingCart.ts

100% Statements 44/44
100% Branches 6/6
100% Functions 5/5
100% Lines 44/44

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 441x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 3x 3x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x
interface Product {
    id: string;
    name: string;
    price: number;
}
 
/**
 * 任務:實作一個函式 `createShoppingCart`,該函式應該能夠創建一個購物車。
 * 範例:createShoppingCart() 應該回傳一個購物車物件,該物件應該有 addItem、getTotalPrice、getItemCount 和 clear 等方法
 * @returns - 回傳一個購物車物件
 */
export function createShoppingCart() {
    let items: Product[] = [];
 
    function addItem(item: Product) {
        items.push(item);
    }
    /**
     * getTotalPrice 方法:計算購物車中所有商品的總價
     * @returns - 回傳購物車中所有商品的總價
     * 範例:getTotalPrice() 應該回傳 300,假設購物車中有兩個商品,價格分別為 100 和 200
     */
    function getTotalPrice() {
        // 請在此處寫下你的程式碼
        return items.reduce((acc, cur) => {
            return acc + cur.price;
        }, 0);
    }
 
    function getItemCount() {
        return items.length;
    }
 
    function clear() {
        items = [];
    }
 
    return {
        addItem,
        getTotalPrice,
        getItemCount,
        clear
    };
}