Package: effect
Module: Types
Determines if two types are exactly equal at the type level.
When to use
Use to assert type equality in conditional types or type-level tests.
Details
<T>() => T extends X ? 1 : 2 trick for exact equality,
distinguishing between any, unknown, never, and other types.true if X and Y are identical, false otherwise.Example (Checking type equality)
import type { Types } from "effect"
type Yes = Types.Equals<{ a: number }, { a: number }> // true
type No = Types.Equals<{ a: number }, { a: string }> // false
type AnyCheck = Types.Equals<any, string> // false
See
EqualsWithSignature
type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
T
>() => T extends Y ? 1 : 2 ? true
: false
Since v2.0.0