1
+ type FlatArray < Arr , Depth extends number > = {
2
+ "done" : Arr ,
3
+ "recur" : Arr extends ReadonlyArray < infer InnerArr >
4
+ ? FlatArray < InnerArr , [ - 1 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 ] [ Depth ] >
5
+ : Arr
6
+ } [ Depth extends - 1 ? "done" : "recur" ] ;
7
+
1
8
interface ReadonlyArray < T > {
2
9
3
10
/**
@@ -22,95 +29,11 @@ interface ReadonlyArray<T> {
22
29
*
23
30
* @param depth The maximum recursion depth
24
31
*/
25
- flat < U > ( this :
26
- ReadonlyArray < U [ ] [ ] [ ] [ ] > |
27
-
28
- ReadonlyArray < ReadonlyArray < U [ ] [ ] [ ] > > |
29
- ReadonlyArray < ReadonlyArray < U [ ] [ ] > [ ] > |
30
- ReadonlyArray < ReadonlyArray < U [ ] > [ ] [ ] > |
31
- ReadonlyArray < ReadonlyArray < U > [ ] [ ] [ ] > |
32
-
33
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U [ ] [ ] > > > |
34
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U > [ ] [ ] > > |
35
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U > > [ ] [ ] > |
36
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U > [ ] > [ ] > |
37
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U [ ] > > [ ] > |
38
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U [ ] > [ ] > > |
39
-
40
- ReadonlyArray < ReadonlyArray < ReadonlyArray < ReadonlyArray < U [ ] > > > > |
41
- ReadonlyArray < ReadonlyArray < ReadonlyArray < ReadonlyArray < U > [ ] > > > |
42
- ReadonlyArray < ReadonlyArray < ReadonlyArray < ReadonlyArray < U > > [ ] > > |
43
- ReadonlyArray < ReadonlyArray < ReadonlyArray < ReadonlyArray < U > > > [ ] > |
44
-
45
- ReadonlyArray < ReadonlyArray < ReadonlyArray < ReadonlyArray < ReadonlyArray < U > > > > > ,
46
- depth : 4 ) : U [ ] ;
47
-
48
- /**
49
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
50
- * specified depth.
51
- *
52
- * @param depth The maximum recursion depth
53
- */
54
- flat < U > ( this :
55
- ReadonlyArray < U [ ] [ ] [ ] > |
56
-
57
- ReadonlyArray < ReadonlyArray < U > [ ] [ ] > |
58
- ReadonlyArray < ReadonlyArray < U [ ] > [ ] > |
59
- ReadonlyArray < ReadonlyArray < U [ ] [ ] > > |
60
-
61
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U [ ] > > > |
62
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U > [ ] > > |
63
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U > > [ ] > |
64
-
65
- ReadonlyArray < ReadonlyArray < ReadonlyArray < ReadonlyArray < U > > > > ,
66
- depth : 3 ) : U [ ] ;
67
-
68
- /**
69
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
70
- * specified depth.
71
- *
72
- * @param depth The maximum recursion depth
73
- */
74
- flat < U > ( this :
75
- ReadonlyArray < U [ ] [ ] > |
76
-
77
- ReadonlyArray < ReadonlyArray < U [ ] > > |
78
- ReadonlyArray < ReadonlyArray < U > [ ] > |
79
-
80
- ReadonlyArray < ReadonlyArray < ReadonlyArray < U > > > ,
81
- depth : 2 ) : U [ ] ;
82
-
83
- /**
84
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
85
- * specified depth.
86
- *
87
- * @param depth The maximum recursion depth
88
- */
89
- flat < U > ( this :
90
- ReadonlyArray < U [ ] > |
91
- ReadonlyArray < ReadonlyArray < U > > ,
92
- depth ?: 1
93
- ) : U [ ] ;
94
-
95
- /**
96
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
97
- * specified depth.
98
- *
99
- * @param depth The maximum recursion depth
100
- */
101
- flat < U > ( this :
102
- ReadonlyArray < U > ,
103
- depth : 0
104
- ) : U [ ] ;
105
-
106
- /**
107
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
108
- * specified depth. If no depth is provided, flat method defaults to the depth of 1.
109
- *
110
- * @param depth The maximum recursion depth
111
- */
112
- flat < U > ( depth ?: number ) : any [ ] ;
113
- }
32
+ flat < A , D extends number = 1 > (
33
+ this : A ,
34
+ depth ?: D
35
+ ) : FlatArray < A , D > [ ]
36
+ }
114
37
115
38
interface Array < T > {
116
39
@@ -135,69 +58,8 @@ interface Array<T> {
135
58
*
136
59
* @param depth The maximum recursion depth
137
60
*/
138
- flat < U > ( this : U [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] , depth : 7 ) : U [ ] ;
139
-
140
- /**
141
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
142
- * specified depth.
143
- *
144
- * @param depth The maximum recursion depth
145
- */
146
- flat < U > ( this : U [ ] [ ] [ ] [ ] [ ] [ ] [ ] , depth : 6 ) : U [ ] ;
147
-
148
- /**
149
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
150
- * specified depth.
151
- *
152
- * @param depth The maximum recursion depth
153
- */
154
- flat < U > ( this : U [ ] [ ] [ ] [ ] [ ] [ ] , depth : 5 ) : U [ ] ;
155
-
156
- /**
157
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
158
- * specified depth.
159
- *
160
- * @param depth The maximum recursion depth
161
- */
162
- flat < U > ( this : U [ ] [ ] [ ] [ ] [ ] , depth : 4 ) : U [ ] ;
163
-
164
- /**
165
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
166
- * specified depth.
167
- *
168
- * @param depth The maximum recursion depth
169
- */
170
- flat < U > ( this : U [ ] [ ] [ ] [ ] , depth : 3 ) : U [ ] ;
171
-
172
- /**
173
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
174
- * specified depth.
175
- *
176
- * @param depth The maximum recursion depth
177
- */
178
- flat < U > ( this : U [ ] [ ] [ ] , depth : 2 ) : U [ ] ;
179
-
180
- /**
181
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
182
- * specified depth.
183
- *
184
- * @param depth The maximum recursion depth
185
- */
186
- flat < U > ( this : U [ ] [ ] , depth ?: 1 ) : U [ ] ;
187
-
188
- /**
189
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
190
- * specified depth.
191
- *
192
- * @param depth The maximum recursion depth
193
- */
194
- flat < U > ( this : U [ ] , depth : 0 ) : U [ ] ;
195
-
196
- /**
197
- * Returns a new array with all sub-array elements concatenated into it recursively up to the
198
- * specified depth. If no depth is provided, flat method defaults to the depth of 1.
199
- *
200
- * @param depth The maximum recursion depth
201
- */
202
- flat < U > ( depth ?: number ) : any [ ] ;
61
+ flat < A , D extends number = 1 > (
62
+ this : A ,
63
+ depth ?: D
64
+ ) : FlatArray < A , D > [ ]
203
65
}
0 commit comments