State and Workflow Patterns
Feature Rollout Case
A rollout rule can decide which typed records receive a feature.
Feature Rollout Case
rollout.ts
type User = {
id: number;
region: "us" | "eu";
};
function enabledFor(user: User, regionFlag: "us" | "eu"): boolean {
return user.region === regionFlag;
}
const regionFlag: "us" | "eu" = ;
const users: User[] = [
{ id: 1, region: "us" },
{ id: 2, region: "eu" },
{ id: 3, region: "us" }
];
const enabled: number[] = [];
for (const user of users) {
if (enabledFor(user, regionFlag)) {
enabled.push(user.id);
}
}
console.log(`enabled=${enabled.join(",")}`);
type User = {
id: number;
region: "us" | "eu";
};
function enabledFor(user: User, regionFlag: "us" | "eu"): boolean {
return user.region === regionFlag;
}
const regionFlag: "us" | "eu" = ;
const users: User[] = [
{ id: 1, region: "us" },
{ id: 2, region: "eu" },
{ id: 3, region: "us" }
];
const enabled: number[] = [];
for (const user of users) {
if (enabledFor(user, regionFlag)) {
enabled.push(user.id);
}
}
console.log(`enabled=${enabled.join(",")}`);
rollout predicate
A predicate function keeps a feature gate separate from the loop that applies it.