rambda
Version:
Lightweight faster alternative to Ramda
22 lines (19 loc) • 570 B
text/typescript
import {At} from '../Object/At'
import {Overwrite} from '../Object/Overwrite'
import {Compute} from '../Any/Compute'
import {IntersectOf} from './IntersectOf'
import {Strict} from './Strict'
export type _Merge<U extends object> = IntersectOf<Overwrite<U, {
[K in keyof U]-?: U extends unknown
? At<U, K>
: never
}>>
/** Merge a **union** of **`object`**s into a single one
* @param U to merge
* @returns **`object`**
* @example
* ```ts
* ```
*/
export type Merge<U extends object> =
Compute<_Merge<Strict<U>>>