From 4c2b406c5878fdd16900b8a0ca2878379abdb5ca Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Wed, 22 Feb 2023 12:13:53 +0000 Subject: [PATCH] Attempted fix for #48 --- src/entrypoints/is-array.d.ts | 2 +- src/entrypoints/utils.d.ts | 2 ++ src/tests/is-array.ts | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/entrypoints/is-array.d.ts b/src/entrypoints/is-array.d.ts index 199bc66..cd5f8d8 100644 --- a/src/entrypoints/is-array.d.ts +++ b/src/entrypoints/is-array.d.ts @@ -1,3 +1,3 @@ interface ArrayConstructor { - isArray(arg: any): arg is unknown[]; + isArray(arg: T): arg is unknown extends T ? unknown[] : any[]; } diff --git a/src/entrypoints/utils.d.ts b/src/entrypoints/utils.d.ts index 00171cb..34d5346 100644 --- a/src/entrypoints/utils.d.ts +++ b/src/entrypoints/utils.d.ts @@ -14,4 +14,6 @@ declare namespace TSReset { : T extends symbol ? symbol : T; + + type Cast = A extends B ? A : B; } diff --git a/src/tests/is-array.ts b/src/tests/is-array.ts index daaa12c..a5a8b0a 100644 --- a/src/tests/is-array.ts +++ b/src/tests/is-array.ts @@ -23,3 +23,17 @@ doNotExecute(() => { type tests = [Expect>]; }); + +doNotExecute(() => { + type Unarray = T extends Array ? U : T; + + function test(value: T) { + const inner = >(v: X[]) => { + // + }; + + if (Array.isArray(value)) { + inner(value); + } + } +});