<S extends Top>(
toEquivalence: () => Equivalence.Equivalence<S["Type"]>
): (self: S) => S["Rebuild"]Overrides the equivalence derivation for a schema by supplying a custom
Equivalence.
When to use
Use when you need a custom equivalence instead of the default structural equivalence derived by toEquivalence.
instancestoEquivalence
Source effect/Schema.ts:132863 lines
export function function overrideToEquivalence<
S extends Top
>(
toEquivalence: () => Equivalence.Equivalence<
S["Type"]
>
): (self: S) => S["Rebuild"]
Overrides the equivalence derivation for a schema by supplying a custom
Equivalence.
When to use
Use when you need a custom equivalence instead of the default structural
equivalence derived by
toEquivalence
.
overrideToEquivalence<function (type parameter) S in overrideToEquivalence<S extends Top>(toEquivalence: () => Equivalence.Equivalence<S["Type"]>): (self: S) => S["Rebuild"]S extends Top>(toEquivalence: () => Equivalence.Equivalence<S["Type"]>toEquivalence: () => import EquivalenceEquivalence.type Equivalence<in A> = (
self: A,
that: A
) => boolean
Represents an equivalence relation over type A.
When to use
Use as a type annotation when you accept or return an equivalence function.
Details
- Returns
boolean: true if values are equivalent, false otherwise
- Must satisfy reflexive, symmetric, and transitive properties
Example (Defining simple number equivalence)
import type { Equivalence } from "effect"
const numberEq: Equivalence.Equivalence<number> = (a, b) => a === b
console.log(numberEq(1, 1)) // true
console.log(numberEq(1, 2)) // false
Example (Defining custom object equivalence)
import type { Equivalence } from "effect"
interface Point {
x: number
y: number
}
const pointEq: Equivalence.Equivalence<Point> = (a, b) =>
a.x === b.x && a.y === b.y
console.log(pointEq({ x: 1, y: 2 }, { x: 1, y: 2 })) // true
Equivalence<function (type parameter) S in overrideToEquivalence<S extends Top>(toEquivalence: () => Equivalence.Equivalence<S["Type"]>): (self: S) => S["Rebuild"]S["Type"]>) {
return (self: S extends Topself: function (type parameter) S in overrideToEquivalence<S extends Top>(toEquivalence: () => Equivalence.Equivalence<S["Type"]>): (self: S) => S["Rebuild"]S): function (type parameter) S in overrideToEquivalence<S extends Top>(toEquivalence: () => Equivalence.Equivalence<S["Type"]>): (self: S) => S["Rebuild"]S["Rebuild"] => self: S extends Topself.Bottom<unknown, unknown, unknown, unknown, AST, Top, unknown, unknown, any, unknown, Mutability, Optionality, ConstructorDefault, Mutability, Optionality>.annotate(annotations: Annotations.Bottom<S["Type"], S["~type.parameters"]>): S["Rebuild"]annotate({ toEquivalence: () => Equivalence.Equivalence<S["Type"]>toEquivalence })
}