Skip to content

Commit 6ef28ba

Browse files
committed
fix: fix ts infinite error
1 parent 904caec commit 6ef28ba

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

source/array-flat.d.ts

+10-6
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ import type {UnknownArray} from './unknown-array';
1313
* //=> type FlatArr0 = [number, string, number, string, number, string];
1414
* ```
1515
*/
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> =
1717
N extends 0
1818
? R
19-
: BuildRepeatedArray<T, Subtract<N, 1>, [...T, ...R]>;
19+
: BuildRepeatedArray<T, Subtract<N, 1>, [...R, ...CopyT]>;
2020

2121
type ArrayFlatOptions = {
2222
/**
@@ -77,20 +77,24 @@ T extends UnknownArray
7777
: Depth extends 0
7878
? [...Result, ...T]
7979
: number extends T['length']
80+
// Handle non-fixed length arrays
8081
? [
8182
...Result,
8283
...(
8384
T[number] extends UnknownArray
84-
? BuildRepeatedArray<InternalArrayFlat<
85+
? InternalArrayFlat<
8586
number extends T[number]['length'] ? T[number] : Partial<T[number]>,
8687
Subtract<Depth, 1>,
8788
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.
9194
: T
9295
),
9396
]
97+
// Handle fixed length arrays
9498
: T extends readonly [infer ArrayItem, ...infer Last]
9599
? ArrayItem extends UnknownArray
96100
? InternalArrayFlat<Last, Depth, Options, [...Result, ...InternalArrayFlat<ArrayItem, Subtract<Depth, 1>, Options>]>

[email protected]

Whitespace-only changes.

0 commit comments

Comments
 (0)