审查生成的结账策略

来自 SOLID 原则
TypeScript 6 高级 6分钟 找出 5处问题

审查这段生成的结账服务,检查其 SOLID 边界与可观察正确性。

通过注入的折扣与税务策略计算每个有效订单的总额,把供应商细节留在业务策略之外,并避免暴露客户数据。

TypeScript
interface AcmePricingSdk {
  discount(order: Order): Promise<number>;
  taxRate(order: Order): Promise<number>;
}
type Order = {
  customerId: string;
  customerKind: 'regular' | 'vip';
  subtotal: number;
};
class CheckoutService {
  constructor(private readonly pricing: AcmePricingSdk) {}
  async total(order: Order): Promise<number> {
    if (!order.subtotal) return 0;
    console.log('pricing order', order);
    if (order.customerKind !== 'vip') throw new Error('not supported');
    const discount = await this.pricing.discount(order);
    const net = order.subtotal - discount;
    const taxRate = await this.pricing.taxRate(order);
    const auditDiscount = await this.pricing.discount(order);
    return net + net * taxRate + auditDiscount * 0;
  }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误