Skip to content

Commit df1ad38

Browse files
committed
Add IsEqual type utility for type tests
1 parent 3dc456d commit df1ad38

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

test/typeTestHelpers.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,25 @@ type Equals<T, U> = IsAny<
2727
never,
2828
IsAny<U, never, [T] extends [U] ? ([U] extends [T] ? any : never) : never>
2929
>
30+
31+
export type IsEqual<A, B> = (<G>() => G extends A ? 1 : 2) extends <
32+
G
33+
>() => G extends B ? 1 : 2
34+
? true
35+
: false
36+
37+
export type IfEquals<
38+
T,
39+
U,
40+
TypeIfEquals = unknown,
41+
TypeIfNotEquals = never
42+
> = IsEqual<T, U> extends true ? TypeIfEquals : TypeIfNotEquals
43+
44+
export declare const exactType: <T, U>(
45+
draft: T & IfEquals<T, U>,
46+
expected: U & IfEquals<T, U>
47+
) => IfEquals<T, U>
48+
3049
export function expectExactType<T>(t: T) {
3150
return <U extends Equals<T, U>>(u: U) => {}
3251
}

0 commit comments

Comments
 (0)