diff --git a/source/is-equal.d.ts b/source/is-equal.d.ts index 0bb0d9d51..b0183048d 100644 --- a/source/is-equal.d.ts +++ b/source/is-equal.d.ts @@ -26,14 +26,10 @@ type Includes = @category Utilities */ export type IsEqual = - [A, B] extends [infer AA, infer BB] - ? [AA] extends [never] - ? [BB] extends [never] - ? true - : false - : [BB] extends [never] - ? false - : _IsEqual + [A] extends [B] + ? [B] extends [A] + ? _IsEqual + : false : false; // This version fails the `equalWrappedTupleIntersectionToBeNeverAndNeverExpanded` test in `test-d/is-equal.ts`. diff --git a/test-d/is-equal.ts b/test-d/is-equal.ts index 1e731574b..c7856c540 100644 --- a/test-d/is-equal.ts +++ b/test-d/is-equal.ts @@ -85,3 +85,7 @@ expectType(equalTupleIntersectionToBeNeverAndNeverExpanded); declare const equalTupleIntersectionAndTuple: IsEqual<[{a: 1}] & [{a: 1}], [{a: 1}]>; // eslint-disable-line @typescript-eslint/no-duplicate-type-constituents expectType(equalTupleIntersectionAndTuple); + +// Test for Issue https://github.com/sindresorhus/type-fest/issues/1305 +type Assignability> = any; +type TestAssignability = Assignability;