type ValueOrArray<T> = T | Array<ValueOrArray<T>>;
type FlatMap<In, Out> = (array: Array<In>, fn: (el: In) => ValueOrArray<Out>) => Array<Out>; 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...