type ValueOrArray<T> = T | Array<ValueOrArray<T>>; type FlatMap<In, Out> = (array: Array<In>, fn: (el: In) => ValueOrArray<Out>) => Array<Out>;
https://www.typescriptlang.org/play?target=6#code/C4TwDgpgBA...