by scarf @scarf005
Merge variadic number of types into a new type. If the keys overlap, its values should be merged into an union.
For example:
type Foo = { a: 1; b: 2 }
type Bar = { a: 2 }
type Baz = { c: 3 }
type Result = MergeAll<[Foo, Bar, Baz]> // expected to be { a: 1 | 2; b: 2; c: 3 }