找出 Profile 守卫里的 bug

来自 类型守卫
TypeScript 6 进阶 4分钟 找出 2处问题

找出这个守卫为何会放行一个随后导致崩溃的值。

TypeScript
type Profile = {
  name: string;
  roles: string[];
};

function isProfile(value: unknown): value is Profile {
  return (
    typeof value === "object" &&
    value !== null &&
    "name" in value
  );
}

function roleCount(value: unknown): number {
  if (!isProfile(value)) return 0;
  return value.roles.length;
}
在试验场中打开
报告错误