@@ -13,10 +13,10 @@ import type {UnknownArray} from './unknown-array';
13
13
* //=> type FlatArr0 = [number, string, number, string, number, string];
14
14
* ```
15
15
*/
16
- type BuildRepeatedArray < T extends UnknownArray , N extends number , R extends unknown [ ] = [ ] > =
16
+ type BuildRepeatedArray < T extends UnknownArray , N extends number , R extends unknown [ ] = [ ] , CopyT extends UnknownArray = T > =
17
17
N extends 0
18
18
? R
19
- : BuildRepeatedArray < T , Subtract < N , 1 > , [ ...T , ...R ] > ;
19
+ : BuildRepeatedArray < T , Subtract < N , 1 > , [ ...R , ...CopyT ] > ;
20
20
21
21
type ArrayFlatOptions = {
22
22
/**
@@ -77,20 +77,24 @@ T extends UnknownArray
77
77
: Depth extends 0
78
78
? [ ...Result , ...T ]
79
79
: number extends T [ 'length' ]
80
+ // Handle non-fixed length arrays
80
81
? [
81
82
...Result ,
82
83
...(
83
84
T [ number ] extends UnknownArray
84
- ? BuildRepeatedArray < InternalArrayFlat <
85
+ ? InternalArrayFlat <
85
86
number extends T [ number ] [ 'length' ] ? T [ number ] : Partial < T [ number ] > ,
86
87
Subtract < Depth , 1 > ,
87
88
Options
88
- > ,
89
- Options [ 'repeat' ]
90
- >
89
+ > extends infer Item
90
+ ? Item extends UnknownArray
91
+ ? BuildRepeatedArray < Item , Options [ 'repeat' ] >
92
+ : never // Never happens, just for fixed ts error TS2589: Type instantiation is excessively deep and possibly infinite.
93
+ : never // Never happens, just for fixed ts error TS2589: Type instantiation is excessively deep and possibly infinite.
91
94
: T
92
95
) ,
93
96
]
97
+ // Handle fixed length arrays
94
98
: T extends readonly [ infer ArrayItem , ...infer Last ]
95
99
? ArrayItem extends UnknownArray
96
100
? InternalArrayFlat < Last , Depth , Options , [ ...Result , ...InternalArrayFlat < ArrayItem , Subtract < Depth , 1 > , Options > ] >
0 commit comments