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]

0 commit comments

Comments
 (0)