Skip to content

gunshi / combinators / merge

Function: merge()

Call Signature

ts
function merge<A, B>(a, b): Omit<A, keyof B> & B;

Experimental

Compose multiple Args schemas into one.

On key conflicts the later schema wins (last-write-wins).

Type Parameters

Type ParameterDescription
A extends ArgsFirst schema type.
B extends ArgsSecond schema type.

Parameters

ParameterTypeDescription
aAFirst schema.
bBSecond schema.

Returns

Omit<A, keyof B> & B

A merged schema containing all fields.

Example

ts
const common = args({ verbose: boolean() })
const network = args({ host: required(string()), port: withDefault(integer(), 8080) })
const schema = merge(common, network)

Call Signature

ts
function merge<A, B, C>(
   a, 
   b, 
   c): Omit<Omit<A, keyof B | keyof C> & Omit<B, keyof C>, never> & C;

Experimental

Compose multiple Args schemas into one.

Type Parameters

Type Parameter
A extends Args
B extends Args
C extends Args

Parameters

ParameterTypeDescription
aAFirst schema.
bBSecond schema.
cCThird schema.

Returns

Omit<Omit<A, keyof B | keyof C> & Omit<B, keyof C>, never> & C

A merged schema containing all fields.

Call Signature

ts
function merge<A, B, C, D>(
   a, 
   b, 
   c, 
   d): Omit<A, 
  | keyof D
  | Exclude<keyof C, keyof D>
  | Exclude<keyof B, keyof D | Exclude<keyof C, keyof D>>> & Omit<B, keyof D | Exclude<keyof C, keyof D>> & Omit<C, keyof D> & D;

Experimental

Compose multiple Args schemas into one.

Type Parameters

Type Parameter
A extends Args
B extends Args
C extends Args
D extends Args

Parameters

ParameterTypeDescription
aAFirst schema.
bBSecond schema.
cCThird schema.
dDFourth schema.

Returns

Omit<A, | keyof D | Exclude<keyof C, keyof D> | Exclude<keyof B, keyof D | Exclude<keyof C, keyof D>>> & Omit<B, keyof D | Exclude<keyof C, keyof D>> & Omit<C, keyof D> & D

A merged schema containing all fields.

Call Signature

ts
function merge<T>(...schemas): MergeArgs<T>;

Experimental

Compose multiple Args schemas into one.

Type Parameters

Type Parameter
T extends Args[]

Parameters

ParameterTypeDescription
...schemasTThe schemas to merge.

Returns

MergeArgs<T>

A merged schema containing all fields.

Released under the MIT License.