Skip to content
This repository was archived by the owner on Aug 3, 2023. It is now read-only.

Commit 3c82097

Browse files
committed
Use TypeScript 4's variadic tuple types
1 parent 009434e commit 3c82097

File tree

1 file changed

+2
-19
lines changed

1 file changed

+2
-19
lines changed

lib/utils.ts

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,7 @@ export type _AllIndexesSuperset<
266266
Tuple extends [] ? 'empty' : IsFinite<Tuple, 'nonEmpty', 'infinite'>
267267
]
268268

269-
export type Prepend<Tuple extends any[], Addend> =
270-
((_: Addend, ..._1: Tuple) => any) extends ((..._: infer Result) => any) ? Result : never
269+
export type Prepend<Tuple extends any[], Addend> = [Addend, ...Tuple]
271270

272271
export type Reverse<Tuple extends any[], Prefix extends any[] = []> = {
273272
empty: Prefix,
@@ -284,23 +283,7 @@ export type Reverse<Tuple extends any[], Prefix extends any[] = []> = {
284283
: 'empty'
285284
]
286285

287-
export type Concat<Left extends any[], Right extends any[]> = {
288-
emptyLeft: Right
289-
singleLeft: Left extends [infer SoleElement]
290-
? Prepend<Right, SoleElement>
291-
: never
292-
multiLeft: ((..._: Reverse<Left>) => any) extends ((_: infer LeftLast, ..._1: infer ReversedLeftRest) => any)
293-
? Concat<Reverse<ReversedLeftRest>, Prepend<Right, LeftLast>>
294-
: never
295-
infiniteLeft: {
296-
ERROR: 'Left is not finite',
297-
CODENAME: 'InfiniteLeft' & 'Infinite'
298-
}
299-
}[
300-
Left extends [] ? 'emptyLeft' :
301-
Left extends [any] ? 'singleLeft' :
302-
IsFinite<Left, 'multiLeft', 'infiniteLeft'>
303-
]
286+
export type Concat<Left extends any[], Right extends any[]> = [...Left, ...Right]
304287

305288
export type Repeat<Type, Count extends number, Holder extends any[] = []> =
306289
Count extends never ? never :

0 commit comments

Comments
 (0)