State and Workflow Patterns
State Transition Case
A small union type can model the allowed states in a workflow.
State Transition Case
state.ts
type Status = "draft" | "review" | "published";
function advance(status: Status): Status {
if (status === "draft") {
return "review";
}
if (status === "review") {
return "published";
}
return "published";
}
const current: Status = ;
const next: Status = advance(current);
console.log(`next=${next}`);
type Status = "draft" | "review" | "published";
function advance(status: Status): Status {
if (status === "draft") {
return "review";
}
if (status === "review") {
return "published";
}
return "published";
}
const current: Status = ;
const next: Status = advance(current);
console.log(`next=${next}`);
state transition
Returning a new state from a function keeps workflow changes explicit and typed.