export type NestedArray = ReadonlyArray> /** * Flatten an array of arrays into a single array. */ export function flatten( list: | ReadonlyArray | NestedArray | NestedArray> | NestedArray>> | NestedArray>>>, ): A[] { return (list as A[]).reduce(flattenReducer, [] as A[]) } function flattenReducer(acc: A[], value: A | A[]): A[] { if (Array.isArray(value)) { acc.push(...flatten(value)) } else { acc.push(value) } return acc }