Skip to content

matchFilters

matchFilters<T, C>(item: T, condition: C): item is T & HasFilterValues<T, C>

Defined in: match-filters.ts:20

Checks if an item matches all conditions in a filter object. Returns true if every key in the condition matches the corresponding item value.

Type Parameter
T extends Record<string, any>
C extends NestableFilters<T>
ParameterTypeDescription
itemTThe object to test.
conditionCThe filter conditions to match.

item is T & HasFilterValues<T, C>

True if the item matches all filter conditions.

This function is useful for filtering objects based on nested or flat filter criteria. It enables type-safe filtering and is commonly used in state machines, event systems, and data processing.

export function matchFilters<
T extends Record<string, any>,
C extends NestableFilters<T>,
>(item: T, condition: C): item is T & HasFilterValues<T, C> {
return Object.keys(condition).every((key) =>
matchKey(condition[key as keyof C], item[key])
);
}
const item = { status: "active", role: "admin" };
const filter = { status: "active", role: ["admin", "user"] };
matchFilters(item, filter); // true