Skip to content

Commit c69b255

Browse files
committed
Upda the isArray type
1 parent ed01085 commit c69b255

14 files changed

+67
-66
lines changed

src/lib/es5.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1376,7 +1376,7 @@ interface ArrayConstructor {
13761376
(arrayLength?: number): any[];
13771377
<T>(arrayLength: number): T[];
13781378
<T>(...items: T[]): T[];
1379-
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? readonly any[] : any[];
1379+
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? (unknown extends T ? never : readonly any[]) : any[];
13801380
readonly prototype: any[];
13811381
}
13821382

tests/baselines/reference/consistentUnionSubtypeReduction.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// https://github.com/microsoft/TypeScript/issues/31155
33

44
declare const MyArray: {
5-
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? readonly any[] : any[];
5+
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? (unknown extends T ? never : readonly any[]) : any[];
66
};
77

88
declare const a: readonly string[] | string;

tests/baselines/reference/consistentUnionSubtypeReduction.symbols

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
declare const MyArray: {
55
>MyArray : Symbol(MyArray, Decl(consistentUnionSubtypeReduction.ts, 2, 13))
66

7-
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? readonly any[] : any[];
7+
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? (unknown extends T ? never : readonly any[]) : any[];
88
>isArray : Symbol(isArray, Decl(consistentUnionSubtypeReduction.ts, 2, 24))
99
>T : Symbol(T, Decl(consistentUnionSubtypeReduction.ts, 3, 12))
1010
>arg : Symbol(arg, Decl(consistentUnionSubtypeReduction.ts, 3, 15))
1111
>T : Symbol(T, Decl(consistentUnionSubtypeReduction.ts, 3, 12))
1212
>arg : Symbol(arg, Decl(consistentUnionSubtypeReduction.ts, 3, 15))
1313
>T : Symbol(T, Decl(consistentUnionSubtypeReduction.ts, 3, 12))
14+
>T : Symbol(T, Decl(consistentUnionSubtypeReduction.ts, 3, 12))
1415

1516
};
1617

tests/baselines/reference/consistentUnionSubtypeReduction.types

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
// https://github.com/microsoft/TypeScript/issues/31155
33

44
declare const MyArray: {
5-
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? readonly any[] : any[]; }
5+
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; }
66

7-
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? readonly any[] : any[];
8-
>isArray : <T>(arg: T | {}) => arg is T extends readonly any[] ? readonly any[] : any[]
7+
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? (unknown extends T ? never : readonly any[]) : any[];
8+
>isArray : <T>(arg: T | {}) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
99
>arg : {} | T
1010

1111
};
@@ -21,9 +21,9 @@ declare const c: unknown;
2121

2222
if (MyArray.isArray(a)) {
2323
>MyArray.isArray(a) : boolean
24-
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
25-
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? readonly any[] : any[]; }
26-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
24+
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
25+
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; }
26+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
2727
>a : string | readonly string[]
2828

2929
a; // readonly string[]
@@ -38,9 +38,9 @@ a; // readonly string[] | string;
3838

3939
if (MyArray.isArray(b)) {
4040
>MyArray.isArray(b) : boolean
41-
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
42-
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? readonly any[] : any[]; }
43-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
41+
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
42+
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; }
43+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
4444
>b : string | string[]
4545

4646
b; // string[] | string;
@@ -55,9 +55,9 @@ b; // string[] | string;
5555

5656
if (MyArray.isArray(c)) {
5757
>MyArray.isArray(c) : boolean
58-
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
59-
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? readonly any[] : any[]; }
60-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
58+
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
59+
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; }
60+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
6161
>c : unknown
6262

6363
c; // any[]
@@ -86,9 +86,9 @@ function f<T>(x: T) {
8686

8787
if (MyArray.isArray(a)) {
8888
>MyArray.isArray(a) : boolean
89-
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
90-
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? readonly any[] : any[]; }
91-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
89+
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
90+
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; }
91+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
9292
>a : string | readonly T[]
9393

9494
a; // readonly T[]
@@ -103,9 +103,9 @@ function f<T>(x: T) {
103103

104104
if (MyArray.isArray(b)) {
105105
>MyArray.isArray(b) : boolean
106-
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
107-
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? readonly any[] : any[]; }
108-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
106+
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
107+
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; }
108+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
109109
>b : string | T[]
110110

111111
b; // T[]
@@ -120,13 +120,13 @@ function f<T>(x: T) {
120120

121121
if (MyArray.isArray(c)) {
122122
>MyArray.isArray(c) : boolean
123-
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
124-
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? readonly any[] : any[]; }
125-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
123+
>MyArray.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
124+
>MyArray : { isArray<T>(arg: {} | T): arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; }
125+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
126126
>c : T
127127

128128
c; // T & (T extends readonly any[] ? readonly any[] : any[])
129-
>c : T & (T extends readonly any[] ? readonly any[] : any[])
129+
>c : T & (T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[])
130130
}
131131
}
132132

tests/baselines/reference/declarationsWithRecursiveInternalTypesProduceUniqueTypeParams.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,9 @@ export const updateIfChanged = <T>(t: T) => {
6767
>assign : { <T, U>(target: T, source: U): T & U; <T, U, V>(target: T, source1: U, source2: V): T & U & V; <T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W; (target: object, ...sources: any[]): any; }
6868
>Array.isArray(u) ? [] : {} : undefined[] | {}
6969
>Array.isArray(u) : boolean
70-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
70+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
7171
>Array : ArrayConstructor
72-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
72+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
7373
>u : U
7474
>[] : undefined[]
7575
>{} : {}

tests/baselines/reference/fixSignatureCaching.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1109,9 +1109,9 @@ define(function () {
11091109
>Array : ArrayConstructor
11101110

11111111
Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; };
1112-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
1112+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
11131113
>Array : ArrayConstructor
1114-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
1114+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
11151115
>function (value) { return Object.prototype.toString.call(value) === '[object Array]'; } : (value: any) => boolean
11161116
>value : any
11171117
>Object.prototype.toString.call(value) === '[object Array]' : boolean

tests/baselines/reference/isArray.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ var maybeArray: number | number[];
55

66
if (Array.isArray(maybeArray)) {
77
>Array.isArray(maybeArray) : boolean
8-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
8+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
99
>Array : ArrayConstructor
10-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
10+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
1111
>maybeArray : number | number[]
1212

1313
maybeArray.length; // OK

tests/baselines/reference/literalFreshnessPropagationOnNarrowing.types

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ function f2() {
6666
>a4 : string | false | (string | false)[]
6767
>Array.isArray(elOrA) ? elOrA : [elOrA] : (string | false)[]
6868
>Array.isArray(elOrA) : boolean
69-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
69+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
7070
>Array : ArrayConstructor
71-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
71+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
7272
>elOrA : string | false | (string | false)[]
7373
>elOrA : (string | false)[]
7474
>[elOrA] : (string | false)[]
@@ -83,9 +83,9 @@ function f2() {
8383
>...Array.isArray(elOrA) ? elOrA : [elOrA] : string | false
8484
>Array.isArray(elOrA) ? elOrA : [elOrA] : (string | false)[]
8585
>Array.isArray(elOrA) : boolean
86-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
86+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
8787
>Array : ArrayConstructor
88-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
88+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
8989
>elOrA : string | false | (string | false)[]
9090
>elOrA : (string | false)[]
9191
>[elOrA] : (string | false)[]

tests/baselines/reference/malformedTags.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
var isArray = Array.isArray;
88
>isArray : Function
9-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
9+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
1010
>Array : ArrayConstructor
11-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
11+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
1212

tests/baselines/reference/noIterationTypeErrorsInCFA.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ export function doRemove(dds: F | F[]) {
1010
if (!Array.isArray(dds)) {
1111
>!Array.isArray(dds) : boolean
1212
>Array.isArray(dds) : boolean
13-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
13+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
1414
>Array : ArrayConstructor
15-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
15+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
1616
>dds : F | F[]
1717

1818
dds = [dds]

tests/baselines/reference/parserharness.types

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3061,27 +3061,27 @@ module Harness {
30613061
>identifier : any
30623062

30633063
public normalizeToArray(arg: any) {
3064-
>normalizeToArray : (arg: any) => readonly any[]
3064+
>normalizeToArray : (arg: any) => any[]
30653065
>arg : any
30663066

30673067
if ((Array.isArray && Array.isArray(arg)) || arg instanceof Array)
30683068
>(Array.isArray && Array.isArray(arg)) || arg instanceof Array : boolean
30693069
>(Array.isArray && Array.isArray(arg)) : boolean
30703070
>Array.isArray && Array.isArray(arg) : boolean
3071-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
3071+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
30723072
>Array : ArrayConstructor
3073-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
3073+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
30743074
>Array.isArray(arg) : boolean
3075-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
3075+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
30763076
>Array : ArrayConstructor
3077-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
3077+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
30783078
>arg : any
30793079
>arg instanceof Array : boolean
30803080
>arg : any
30813081
>Array : ArrayConstructor
30823082

30833083
return arg;
3084-
>arg : readonly any[]
3084+
>arg : any[]
30853085

30863086
return [arg];
30873087
>[arg] : any[]
@@ -3240,12 +3240,12 @@ module Harness {
32403240
>others : any
32413241

32423242
others = this.normalizeToArray(others);
3243-
>others = this.normalizeToArray(others) : readonly any[]
3243+
>others = this.normalizeToArray(others) : any[]
32443244
>others : any
3245-
>this.normalizeToArray(others) : readonly any[]
3246-
>this.normalizeToArray : (arg: any) => readonly any[]
3245+
>this.normalizeToArray(others) : any[]
3246+
>this.normalizeToArray : (arg: any) => any[]
32473247
>this : this
3248-
>normalizeToArray : (arg: any) => readonly any[]
3248+
>normalizeToArray : (arg: any) => any[]
32493249
>others : any
32503250

32513251
for (var i = 0; i < others.length; i++) {
@@ -3294,12 +3294,12 @@ module Harness {
32943294
>others : any
32953295

32963296
others = this.normalizeToArray(others);
3297-
>others = this.normalizeToArray(others) : readonly any[]
3297+
>others = this.normalizeToArray(others) : any[]
32983298
>others : any
3299-
>this.normalizeToArray(others) : readonly any[]
3300-
>this.normalizeToArray : (arg: any) => readonly any[]
3299+
>this.normalizeToArray(others) : any[]
3300+
>this.normalizeToArray : (arg: any) => any[]
33013301
>this : this
3302-
>normalizeToArray : (arg: any) => readonly any[]
3302+
>normalizeToArray : (arg: any) => any[]
33033303
>others : any
33043304

33053305
for (var i = 0; i < others.length; i++) {
@@ -3449,12 +3449,12 @@ module Harness {
34493449
>others : any
34503450

34513451
others = this.normalizeToArray(others);
3452-
>others = this.normalizeToArray(others) : readonly any[]
3452+
>others = this.normalizeToArray(others) : any[]
34533453
>others : any
3454-
>this.normalizeToArray(others) : readonly any[]
3455-
>this.normalizeToArray : (arg: any) => readonly any[]
3454+
>this.normalizeToArray(others) : any[]
3455+
>this.normalizeToArray : (arg: any) => any[]
34563456
>this : this
3457-
>normalizeToArray : (arg: any) => readonly any[]
3457+
>normalizeToArray : (arg: any) => any[]
34583458
>others : any
34593459

34603460
for (var i = 0; i < others.length; i++) {
@@ -3505,12 +3505,12 @@ module Harness {
35053505
>others : any
35063506

35073507
others = this.normalizeToArray(others);
3508-
>others = this.normalizeToArray(others) : readonly any[]
3508+
>others = this.normalizeToArray(others) : any[]
35093509
>others : any
3510-
>this.normalizeToArray(others) : readonly any[]
3511-
>this.normalizeToArray : (arg: any) => readonly any[]
3510+
>this.normalizeToArray(others) : any[]
3511+
>this.normalizeToArray : (arg: any) => any[]
35123512
>this : this
3513-
>normalizeToArray : (arg: any) => readonly any[]
3513+
>normalizeToArray : (arg: any) => any[]
35143514
>others : any
35153515

35163516
for (var i = 0; i < others.length; i++) {

tests/baselines/reference/partiallyDiscriminantedUnions.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ function isShape(s : Shapes): s is Shape {
7777
return !Array.isArray(s);
7878
>!Array.isArray(s) : boolean
7979
>Array.isArray(s) : boolean
80-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
80+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
8181
>Array : ArrayConstructor
82-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
82+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
8383
>s : Shapes
8484
}
8585

tests/baselines/reference/spreadBooleanRespectsFreshness.types

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ foo1 = [...Array.isArray(foo2) ? foo2 : [foo2]];
2222
>...Array.isArray(foo2) ? foo2 : [foo2] : FooBase
2323
>Array.isArray(foo2) ? foo2 : [foo2] : FooArray
2424
>Array.isArray(foo2) : boolean
25-
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
25+
>Array.isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
2626
>Array : ArrayConstructor
27-
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? readonly any[] : any[]
27+
>isArray : <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]
2828
>foo2 : Foo
2929
>foo2 : FooArray
3030
>[foo2] : FooBase[]

tests/cases/compiler/consistentUnionSubtypeReduction.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// https://github.com/microsoft/TypeScript/issues/31155
22

33
declare const MyArray: {
4-
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? readonly any[] : any[];
4+
isArray<T>(arg: T | {}): arg is T extends readonly any[] ? (unknown extends T ? never : readonly any[]) : any[];
55
};
66

77
declare const a: readonly string[] | string;

0 commit comments

Comments
 (0)