Open adoin opened 1 year ago
// your answers type ChunkIter<A extends any[], L extends number, R extends any[] = []> = A extends [infer F, ...infer T] ? R['length'] extends L ? [R, ...ChunkIter<T, L, [F]>] : ChunkIter<T, L, [...R, F]> : [R] type Chunk<A extends any[], L extends number> = A extends [] ? [] : ChunkIter<A, L>
Better: type Chunk<A extends any[], L extends number, R extends any[] = []> = A extends [infer F, ...infer T] ? R['length'] extends L ? [R, ...Chunk<T, L, [F]>] : Chunk<T, L, [...R, F]> : R extends [] ? [] : [R]
type Chunk<A extends any[], L extends number, R extends any[] = []> = A extends [infer F, ...infer T] ? R['length'] extends L ? [R, ...Chunk<T, L, [F]>] : Chunk<T, L, [...R, F]> : R extends [] ? [] : [R]