rivo
Version:
🤖 The ultimate library you need for composable type-level programming in TypeScript, powered by HKT.
33 lines (30 loc) • 944 B
TypeScript
import type { Merge } from "./Merge";
// @ts-ignore - Only used in doc comments
import type MergeFn from "./Merge";
import type { Args, Fn } from "../HKT";
/**
* The flipped version of {@link Merge}.
*
* The `R` suffix (short for **R**ight or **R**everse) means that the arguments are flipped.
*
* Sig: `(r: object, l: object) => object`
*
* @example
* ```typescript
* type A = { a: number; b?: string };
* type B = { a: boolean; c: string };
* type R = MergeR<B, A>;
* // ^?: { a: boolean; b?: string; c: string }
* ```
*/
export type MergeR<R extends object, L extends object> = Merge<L, R>;
/**
* [Fn] The flipped version of {@link MergeFn}.
*
* Sig: `(r: object, l: object) => object`
*
* The `R` suffix (short for **R**ight or **R**everse) means that the arguments are flipped.
*/
export default interface MergeRFn extends Fn<[object, object], object> {
def: ([r, l]: Args<this>) => MergeR<typeof r, typeof l>;
}