Explanation
Type request bodies, database models, and responses so backend bugs show up at compile time.
Code example
typescripttype CreateSkillInput = { name: string; level: "beginner" | "advanced" };
export function parseSkill(body: unknown): CreateSkillInput {
if (!body || typeof body !== "object" || !("name" in body)) {
throw new Error("Invalid payload");
}
const name = String((body as { name: unknown }).name);
return { name, level: "beginner" };
}Helpful resources
Exercise
Type a create-user payload and a User model, then write a parser that rejects invalid JSON.
