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.