diff --git a/source/is-equal.d.ts b/source/is-equal.d.ts index 646f0fb7b..0bb0d9d51 100644 --- a/source/is-equal.d.ts +++ b/source/is-equal.d.ts @@ -26,8 +26,14 @@ type Includes = @category Utilities */ export type IsEqual = - [A, B] extends [infer A, infer B] - ? _IsEqual + [A, B] extends [infer AA, infer BB] + ? [AA] extends [never] + ? [BB] extends [never] + ? true + : false + : [BB] extends [never] + ? false + : _IsEqual : 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 a8f170440..1e731574b 100644 --- a/test-d/is-equal.ts +++ b/test-d/is-equal.ts @@ -15,6 +15,10 @@ expectType({} as IsEqual); expectType({} as IsEqual); expectType({} as IsEqual); expectType({} as IsEqual); +expectType({} as IsEqual); +expectType({} as IsEqual); +expectType({} as IsEqual<[never], [unknown]>); +expectType({} as IsEqual<[unknown], [never]>); expectType({} as IsEqual<[any], [never]>); expectType({} as IsEqual<[any], [any]>); expectType({} as IsEqual<[never], [never]>);