MST

星途 面试题库

面试题:TypeScript复合类型在复杂业务场景下的应用

假设你正在开发一个电商购物车模块,购物车中的商品有不同的属性,如商品ID(number)、商品名称(string)、价格(number)、库存数量(number)以及是否促销(boolean)。请使用TypeScript的复合类型来定义购物车中商品的类型,并实现一个函数,该函数接收购物车商品列表作为参数,计算购物车中所有商品的总价,同时要处理促销商品(例如促销商品打8折)。说明这里如何体现基本类型和复合类型的协同工作。
30.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 使用复合类型定义购物车中商品的类型
type CartItem = {
  productId: number;
  productName: string;
  price: number;
  stock: number;
  isOnSale: boolean;
};

// 计算购物车中所有商品的总价
function calculateTotal(cartItems: CartItem[]): number {
  return cartItems.reduce((total, item) => {
    const itemPrice = item.isOnSale? item.price * 0.8 : item.price;
    return total + itemPrice;
  }, 0);
}

// 示例使用
const cart: CartItem[] = [
  { productId: 1, productName: '商品1', price: 100, stock: 5, isOnSale: true },
  { productId: 2, productName: '商品2', price: 200, stock: 3, isOnSale: false }
];

const total = calculateTotal(cart);
console.log(`购物车总价: ${total}`);

在上述代码中:

  • 基本类型number 用于表示商品ID、价格、库存数量;string 用于表示商品名称;boolean 用于表示是否促销。这些基本类型是构建复合类型的基础。
  • 复合类型:通过 type 关键字定义了 CartItem 类型,它是一个包含多个基本类型属性的对象类型,属于复合类型。函数 calculateTotal 的参数使用了 CartItem 这种复合类型来表示购物车商品列表,在函数内部对每个 CartItem 对象中的基本类型属性(如 priceisOnSale)进行操作,体现了基本类型和复合类型的协同工作。