Package: effect
Module: Struct
Given a struct of Equivalences returns a new Equivalence that compares values of a struct
by applying each Equivalence to the corresponding property of the struct.
Alias of Equivalence.struct.
Example
import * as assert from "node:assert"
import { Struct, String, Number } from "effect"
const PersonEquivalence = Struct.getEquivalence({
name: String.Equivalence,
age: Number.Equivalence
})
assert.deepStrictEqual(
PersonEquivalence({ name: "John", age: 25 }, { name: "John", age: 25 }),
true
)
assert.deepStrictEqual(
PersonEquivalence({ name: "John", age: 25 }, { name: "John", age: 40 }),
false
)
Signature
declare const getEquivalence: <R extends Record<string, Equivalence.Equivalence<any>>>(isEquivalents: R) => Equivalence.Equivalence<{ readonly [K in keyof R]: [R[K]] extends [Equivalence.Equivalence<infer A>] ? A : never; }>
Since v2.0.0