I fail to understand why these two array-flattening types aren't equivalent :
type FlatArray1<T> = Array<T extends Array<infer U> ? U : T>
type FlatArray2<T> = T extends Array<infer U> ? Array<U> : Array<T>
type A = FlatArray1<boolean> // boolean[]
type B = FlatArray2<boolean> // false[] | true[]
Thanks for your help.