- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMergeArray.ts
More file actions
Latest commit
19 lines (17 loc) · 601 Bytes
/
Copy pathMergeArray.ts
File metadata and controls
19 lines (17 loc) · 601 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
importtype{UnknownArray}from'../Base/UnknownArray'
exporttypeMergeArrayOptions={
mode?: 'replace'|'spread'
}
exporttypeMergeArray<
TargetextendsUnknownArray,
SourceextendsUnknownArray,
OptionsextendsMergeArrayOptions={mode: 'spread'}
>=(
[Source|Target]extendsUnknownArray
? Options['mode']extends'replace'
? [Target,Source]extends[Readonly<[unknown, ...infer TTail]>,Readonly<[infer SHead, ...infer STail]>]
? [SHead, ...MergeArray<TTail,STail,Options>]
: [...Source, ...Target]
: [...Target, ...Source]
: never
)