A reusable predicate function can narrow values inside array methods.

Predicate Function

predicate.ts
type User = {
    name: string;
    active: boolean;
};

function isActive(user: User): boolean {
    return user.active;
}

const secondActive: boolean = ;
const users: User[] = [
    { name: "Ada", active: true },
    { name: "Milo", active: secondActive },
    { name: "Lin", active: false },
];

const activeNames: string = users.filter(isActive).map((user) => user.name).join(",");

console.log(activeNames);
type User = {
    name: string;
    active: boolean;
};

function isActive(user: User): boolean {
    return user.active;
}

const secondActive: boolean = ;
const users: User[] = [
    { name: "Ada", active: true },
    { name: "Milo", active: secondActive },
    { name: "Lin", active: false },
];

const activeNames: string = users.filter(isActive).map((user) => user.name).join(",");

console.log(activeNames);
predicate A function that returns a boolean can capture the guard logic used by `filter`.