effect-io-ai

Package: effect
Module: Struct

Struct.makeEquivalence

Creates an Equivalence for a struct by providing an Equivalence for each property. Two structs are equivalent when all their corresponding properties are equivalent.

When to use

Use when you need equality for a record-like object to be decided field by field, with a custom equality rule for each property.

Details

This is an alias of Equivalence.Struct. Each property’s equivalence is checked independently; all must return true for the overall result to be true.

Example (Comparing structs for equivalence)

import { Equivalence, Struct } from "effect"

const PersonEquivalence = Struct.makeEquivalence({
  name: Equivalence.strictEqual<string>(),
  age: Equivalence.strictEqual<number>()
})

console.log(PersonEquivalence({ name: "Alice", age: 30 }, { name: "Alice", age: 30 }))
// true
console.log(PersonEquivalence({ name: "Alice", age: 30 }, { name: "Bob", age: 30 }))
// false

See

Signature

declare const makeEquivalence: <R extends Record<string, Equivalence.Equivalence<any>>>(fields: R) => Equivalence.Equivalence<{ readonly [K in keyof R]: [R[K]] extends [Equivalence.Equivalence<infer A>] ? A : never; }>

Source

Since v4.0.0