找出Invoice谓词里的bug

来自类型收窄
TypeScript 6 进阶 5分钟 找出2处问题

找出这个谓词为何会放行一个让formatInvoice崩溃的值。

TypeScript
type Invoice = { id: string; total: number };

function isInvoice(value: unknown): value is Invoice {
  return (
    typeof value === "object" &&
    value !== null &&
    "id" in value
  );
}

function formatInvoice(value: unknown): string {
  if (!isInvoice(value)) return "invalid";
  return `${value.id}:${value.total.toFixed(2)}`;
}
在试验场中打开
报告错误