MergeAll
约 185 字小于 1 分钟
2026-02-11
题目
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 }解题思路
待补充
答案
type MergeAll<XS> = any验证
import type { Equal, Expect } from '@type-challenges/utils'
type cases = [
Expect<Equal<MergeAll<[]>, {} >>,
Expect<Equal<MergeAll<[{ a: 1 }]>, { a: 1 }>>,
Expect<Equal<
MergeAll<[{ a: string }, { a: string }]>,
{ a: string }
>
>,
Expect<Equal<
MergeAll<[{ }, { a: string }]>,
{ a: string }
>
>,
Expect<Equal<
MergeAll<[{ a: 1 }, { c: 2 }]>,
{ a: 1, c: 2 }
>
>,
Expect<Equal<
MergeAll<[{ a: 1, b: 2 }, { a: 2 }, { c: 3 }]>,
{ a: 1 | 2, b: 2, c: 3 }
>
>,
Expect<Equal<MergeAll<[{ a: 1 }, { a: number }]>, { a: number }>>,
Expect<Equal<MergeAll<[{ a: number }, { a: 1 }]>, { a: number }>>,
Expect<Equal<MergeAll<[{ a: 1 | 2 }, { a: 1 | 3 }]>, { a: 1 | 2 | 3 }>>,
]参考
无
