Hyperlinkv0.8.0-beta.28

Types

Types.Equalstypeeffect/Types.ts:282
Equals<X, Y>

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

  • Uses the <T>() => T extends X ? 1 : 2 trick for exact equality, distinguishing between any, unknown, never, and other types.
  • Resolves to 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
Source effect/Types.ts:2824 lines
export type Equals<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
  T
>() => T extends Y ? 1 : 2 ? true
  : false
Referenced by 2 symbols