Hyperlinkv0.8.0-beta.28

Equal

Equal.isEqualconsteffect/Equal.ts:432
(u: unknown): u is Equal

Checks whether a value implements the Equal interface.

When to use

Use when you need generic utility code to distinguish Equal implementors from plain values before calling [Equal.symbol] directly.

Details

  • Pure function, no side effects.
  • Returns true if and only if u has a property keyed by symbol.
  • Acts as a TypeScript type guard, narrowing the input to Equal.

Example (Checking Equal values)

import { Equal, Hash } from "effect"

class Token implements Equal.Equal {
  constructor(readonly value: string) {}
  [Equal.symbol](that: Equal.Equal): boolean {
    return that instanceof Token && this.value === that.value
  }
  [Hash.symbol](): number {
    return Hash.string(this.value)
  }
}

console.log(Equal.isEqual(new Token("abc"))) // true
console.log(Equal.isEqual({ x: 1 }))         // false
console.log(Equal.isEqual(42))                // false
Source effect/Equal.ts:4321 lines
export const isEqual = (u: unknown): u is Equal => hasProperty(u, symbol)