-
Notifications
You must be signed in to change notification settings - Fork 10
List
hkt-toolbelt / List
- Every
- Filter
- Find
- First
- Includes
- IsVariadic
- Last
- Length
- Map
- Pair
- Pop
- Push
- Reduce
- Reverse
- Shift
- Slice
- Some
- Times
- Unshift
Ƭ List: unknown
[]
Ƭ _$every<F
, T
, O
>: T
extends [infer Head, ...(infer Rest)] ? _$every
<F
, Rest
, _$and
<O
, $
<F
, _$cast
<Head
, _$inputOf
<F
>>>>> : O
Name | Type |
---|---|
F |
extends Kind <(x : never ) => boolean > |
T |
extends unknown [] |
O |
extends boolean = true
|
Ƭ _$filter<F
, X
, O
>: X
extends [infer Head, ...(infer Tail)] ? $
<F
, _$cast
<Head
, _$inputOf
<F
>>> extends true
? _$filter
<F
, Tail
, [...O, Head
]> : _$filter
<F
, Tail
, O
> : O
Name | Type |
---|---|
F |
extends Kind
|
X |
extends unknown [] |
O |
extends unknown [] = [] |
Ƭ _$find<F
, X
>: X
extends [infer Head, ...(infer Tail)] ? $
<F
, _$cast
<Head
, _$inputOf
<F
>>> extends true
? Head
: _$find
<F
, Tail
> : never
Name | Type |
---|---|
F |
extends Kind
|
X |
extends unknown [] |
Ƭ _$first<T
>: T
extends [] ? never
: T
[0
]
Name | Type |
---|---|
T |
extends unknown [] |
Ƭ _$includes<F
, X
>: X
extends [infer Head, ...(infer Tail)] ? $
<F
, _$cast
<Head
, _$inputOf
<F
>>> extends true
? true
: _$includes
<F
, Tail
> : false
Name | Type |
---|---|
F |
extends Kind
|
X |
extends unknown [] |
Ƭ _$isVariadic<T
>: number
extends T
["length"
] ? true
: false
Name | Type |
---|---|
T |
extends unknown [] |
Ƭ _$last<T
>: T
extends [infer X] ? X
: T
extends [unknown
, ...(infer Tail)] ? _$last
<Tail
> : T
extends [...unknown[], infer X] ? X
: T
[number
]
Name | Type |
---|---|
T |
extends readonly unknown [] |
Ƭ _$length<T
>: T
["length"
]
Name | Type |
---|---|
T |
extends unknown [] |
Ƭ _$map<T
, X
>: { [key in keyof X]: $<T, _$cast<X[key], _$inputOf<T>>> }
Name | Type |
---|---|
T |
extends Kind
|
X |
extends unknown [] |
Ƭ _$pair<T
, O
>: T
extends [infer X1, infer X2, ...(infer Rest)] ? _$pair
<[X2
, ...Rest], [...O, [X1
, X2
]]> : number
extends T
["length"
] ? [T
[number
], T
[number
]][] : O
Name | Type |
---|---|
T |
extends unknown [] |
O |
extends unknown [][] = [] |
Ƭ _$pop<T
>: T
extends [...(infer Head), unknown
] ? Head
: never
Name | Type |
---|---|
T |
extends readonly unknown [] |
Ƭ _$push<X
, T
>: [...T, X
]
Name | Type |
---|---|
X |
X |
T |
extends unknown [] |
Ƭ _$reduce<F
, X
, O
>: 1
extends 0
? never
: X
extends [infer H, ...(infer T)] ? $
<$
<F
, _$cast
<O
, _$inputOf
<F
>>>, _$cast
<H
, _$inputOf
<_$returnType
<F
& { [_]
: _$cast
<O
, _$inputOf
<F
>> }["f"
]>>>> extends infer R ? _$reduce
<F
, T
, R
> : never
: O
Name | Type |
---|---|
F |
extends Kind <(x : never ) => Kind > |
X |
extends unknown [] |
O |
O |
Ƭ _$reverse<T
, O
>: T
extends [infer Head, ...(infer Tail)] ? _$reverse
<Tail
, [Head
, ...O]> : T
extends [] ? O
: [..._$reverse2<T>, ...O]
Name | Type |
---|---|
T |
extends unknown [] |
O |
extends unknown [] = [] |
Ƭ _$shift<T
>: T
extends [unknown
, ...(infer Tail)] ? Tail
: never
Name | Type |
---|---|
T |
extends unknown [] |
Ƭ _$slice<T
, N
>: _$isNatural
<N
> extends true
? _$slice2
<T
, _$toList
<N
>> : never
Name | Type |
---|---|
T |
extends unknown [] |
N |
extends Number
|
Ƭ _$some<F
, T
, O
>: 0
extends 1
? never
: T
extends [infer Head, ...(infer Rest)] ? _$some
<F
, Rest
, _$or
<O
, $
<F
, _$cast
<Head
, _$inputOf
<F
>>>>> : O
Name | Type |
---|---|
F |
extends Kind <(x : never ) => boolean > |
T |
extends unknown [] |
O |
extends boolean = false
|
Ƭ _$times<N
>: _$times2
<_$toList
<N
>>
Name | Type |
---|---|
N |
extends Number
|
Ƭ _$unshift<X
, T
>: [X
, ...T]
Name | Type |
---|---|
X |
X |
T |
extends unknown [] |