EqualsWith<A, B, Y, N>Determines if two types are equal, returning custom types for each case.
When to use
Use when you need a type-level if/else based on type equality.
Details
Returns Y when A and B are equal, N otherwise.
Example (Choosing a conditional type based on equality)
import type { Types } from "effect"
type R1 = Types.EqualsWith<string, string, "same", "diff"> // "same"
type R2 = Types.EqualsWith<string, number, "same", "diff"> // "diff"modelsEquals
Source effect/Types.ts:3121 lines
export type type EqualsWith<A, B, Y, N> = (<
T
>() => T extends A ? 1 : 2) extends <
T
>() => T extends B ? 1 : 2
? Y
: N
Determines if two types are equal, returning custom types for each case.
When to use
Use when you need a type-level if/else based on type equality.
Details
Returns Y when A and B are equal, N otherwise.
Example (Choosing a conditional type based on equality)
import type { Types } from "effect"
type R1 = Types.EqualsWith<string, string, "same", "diff"> // "same"
type R2 = Types.EqualsWith<string, number, "same", "diff"> // "diff"
EqualsWith<function (type parameter) A in type EqualsWith<A, B, Y, N>A, function (type parameter) B in type EqualsWith<A, B, Y, N>B, function (type parameter) Y in type EqualsWith<A, B, Y, N>Y, function (type parameter) N in type EqualsWith<A, B, Y, N>N> = (<function (type parameter) T in <T>(): T extends A ? 1 : 2T>() => function (type parameter) T in <T>(): T extends A ? 1 : 2T extends function (type parameter) A in type EqualsWith<A, B, Y, N>A ? 1 : 2) extends (<function (type parameter) T in <T>(): T extends B ? 1 : 2T>() => function (type parameter) T in <T>(): T extends B ? 1 : 2T extends function (type parameter) B in type EqualsWith<A, B, Y, N>B ? 1 : 2) ? function (type parameter) Y in type EqualsWith<A, B, Y, N>Y : function (type parameter) N in type EqualsWith<A, B, Y, N>NReferenced by 4 symbols