Review this generated parser and renderer before it handles production API responses.
Validate untrusted JSON, require a label, never log tokens, preserve a legitimate zero value, and fail compilation when a union member is added without rendering logic.
TypeScript
type ApiResult =
| { kind: "ok"; value: number; token: string }
| { kind: "error"; message: string; token: string };
type Displayable = ApiResult & { label: string };
function parseResult(raw: string): Displayable {
const parsed = JSON.parse(raw) as Displayable;
return parsed;
}
function render(result: Displayable): string {
console.log("result", JSON.stringify(result));
switch (result.kind) {
case "ok":
if (!result.value) return `${result.label}:empty`;
return `${result.label}:${result.value}`;
case "error":
return `${result.label}:${result.message}`;
default:
return "unknown";
}
}
generated code is illustrative, not from any one model