API reference@evolu/commonSet › filterSet

Call Signature

function filterSet<T, S>(
  set: ReadonlySet<T>,
  refinement: RefinementWithIndex<T, S>,
): ReadonlySet<S>;

Defined in: packages/common/src/Set.ts:277

Filters a set using a predicate or refinement function, returning a new readonly set.

When used with a refinement function (with value is Type syntax), TypeScript will narrow the result type.

Filtering and refining

import { assertEqual, assertType, filterSet } from "@evolu/common";

const evens = filterSet(new Set([1, 2, 3, 4, 5]), (x) => x % 2 === 0);
assertEqual(evens, new Set([2, 4]));

const mixed: ReadonlySet<string | number> = new Set([1, "a", 2, "b"]);
const strings = filterSet(
  mixed,
  (value): value is string => typeof value === "string",
);
assertType<ReadonlySet<string>, typeof strings>();
assertEqual(strings, new Set(["a", "b"]));

Call Signature

function filterSet<T>(
  set: ReadonlySet<T>,
  predicate: PredicateWithIndex<T>,
): ReadonlySet<T>;

Defined in: packages/common/src/Set.ts:282

With predicate.