Review generated webhook guard

from Type guards
TypeScript 6 advanced 6 min 3 issues to find

Review this generated webhook decoder before it handles production transfers.

Accept an untrusted transfer webhook, validate its type, accountId, positive finite amount, and secret token, avoid exposing the token, and return invalid for malformed input.

TypeScript
type Transfer = {
  type: "transfer";
  accountId: string;
  amount: number;
  token: string;
};

function isTransfer(value: unknown): value is Transfer {
  return (
    typeof value === "object" &&
    value !== null &&
    "type" in value
  );
}

function handleTransfer(raw: string): string {
  const value: unknown = JSON.parse(raw);
  if (!isTransfer(value)) return "invalid";
  console.log("webhook", JSON.stringify(value));
  return `${value.accountId}:${value.amount.toFixed(2)}`;
}

generated code is illustrative, not from any one model

Open in playground
Report an error