Skip to content

Latest commit

 

History

History
91 lines (62 loc) · 1.33 KB

File metadata and controls

91 lines (62 loc) · 1.33 KB

typelab / utils / ArrayMerge

type ArrayMerge<Target, Source, Z> = IsArray<Target | Source> extends true ? _ArrayMerge<Target, Source, Z> : never;

Merges elements of Target with elements of Source.

This type will merge all nested Array types (if Z is 'deep').

Type Parameters

Type Parameter Default type Description

Target extends ReadonlyArray

The Array to be overwritten.

Source extends ReadonlyArray

[]

The Array to be assigned to the Target.

Z extends _LookupType

"shallow"

Defines the lookup type, which can be 'deep' or 'shallow', defaults to 'shallow'.

Returns

A new Array type that merges Target elements with Source elements.

Example

type Arr1 = [string, [string, string]];
type Arr2 = [number, [number], number];

// [string | number, [number] | [string, string], number]
type Shallow = ArrayMerge<Arr1, Arr2, 'shallow'>;

// [string | number, [string | number, string], number]
type Deep = ArrayMerge<Arr1, Arr2, 'deep'>;