Skip to content

Commit f7b2667

Browse files
IsEqual: Fix generic inference (#1306)
1 parent 2702882 commit f7b2667

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

source/is-equal.d.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,10 @@ type Includes<Value extends readonly any[], Item> =
2626
@category Utilities
2727
*/
2828
export type IsEqual<A, B> =
29-
[A, B] extends [infer AA, infer BB]
30-
? [AA] extends [never]
31-
? [BB] extends [never]
32-
? true
33-
: false
34-
: [BB] extends [never]
35-
? false
36-
: _IsEqual<AA, BB>
29+
[A] extends [B]
30+
? [B] extends [A]
31+
? _IsEqual<A, B>
32+
: false
3733
: false;
3834

3935
// This version fails the `equalWrappedTupleIntersectionToBeNeverAndNeverExpanded` test in `test-d/is-equal.ts`.

test-d/is-equal.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,7 @@ expectType<true>(equalTupleIntersectionToBeNeverAndNeverExpanded);
8585

8686
declare const equalTupleIntersectionAndTuple: IsEqual<[{a: 1}] & [{a: 1}], [{a: 1}]>; // eslint-disable-line @typescript-eslint/no-duplicate-type-constituents
8787
expectType<true>(equalTupleIntersectionAndTuple);
88+
89+
// Test for Issue https://github.com/sindresorhus/type-fest/issues/1305
90+
type Assignability<T, U, _V extends IsEqual<T, U>> = any;
91+
type TestAssignability<T> = Assignability<T, T, true>;

0 commit comments

Comments
 (0)