MST

星途 面试题库

面试题:TypeScript 函数类型注解与接口在复杂业务逻辑中的应用

在一个电商购物车系统中,有添加商品到购物车、更新购物车商品数量、计算购物车总价等功能。请使用 TypeScript 的函数类型注解与接口协同来设计这几个核心功能。需要定义相关接口来表示商品信息、购物车项以及购物车状态等,函数参数和返回值都要使用合适的类型注解,并且要考虑到函数之间的依赖和数据交互。
46.8万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 定义商品信息接口
interface Product {
    id: number;
    name: string;
    price: number;
}

// 定义购物车项接口
interface CartItem {
    product: Product;
    quantity: number;
}

// 定义购物车状态接口
interface CartState {
    items: CartItem[];
}

// 添加商品到购物车函数
function addProductToCart(cart: CartState, product: Product, quantity: number): CartState {
    const existingItem = cart.items.find(item => item.product.id === product.id);
    if (existingItem) {
        existingItem.quantity += quantity;
    } else {
        cart.items.push({ product, quantity });
    }
    return cart;
}

// 更新购物车商品数量函数
function updateCartItemQuantity(cart: CartState, productId: number, newQuantity: number): CartState {
    const itemIndex = cart.items.findIndex(item => item.product.id === productId);
    if (itemIndex!== -1) {
        cart.items[itemIndex].quantity = newQuantity;
    }
    return cart;
}

// 计算购物车总价函数
function calculateCartTotal(cart: CartState): number {
    return cart.items.reduce((total, item) => total + item.product.price * item.quantity, 0);
}