diff --git a/source/includes.d.ts b/source/includes.d.ts index 1e516276c..610b850c0 100644 --- a/source/includes.d.ts +++ b/source/includes.d.ts @@ -15,8 +15,8 @@ type hasRed = Includes; @category Array */ export type Includes = - IsEqual extends true - ? true - : Value extends [Value[0], ...infer rest] - ? Includes - : false; + Value extends readonly [Value[0], ...infer rest] + ? IsEqual extends true + ? true + : Includes + : false; diff --git a/test-d/includes.ts b/test-d/includes.ts index b979a8db6..0637c1a68 100644 --- a/test-d/includes.ts +++ b/test-d/includes.ts @@ -32,6 +32,12 @@ expectType(objectIncludes); const objectIncludesPass: Includes<[{a: 1}], {a: 1}> = true; expectType(objectIncludesPass); +const nullIncludesUndefined: Includes<[null], undefined> = false; +expectType(nullIncludesUndefined); + +const nullIncludesNullPass: Includes<[null], null> = true; +expectType(nullIncludesNullPass); + declare const anything: any; expectError(anything);