Skip to content

Commit

Permalink
Make ResolveTypesOfTypeGuardsTuple more readable
Browse files Browse the repository at this point in the history
  • Loading branch information
Myfeetarefreezing committed Jul 23, 2023
1 parent fb7acd8 commit 0fee49d
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion source/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,12 @@ is.arrayLike = <T = unknown>(value: unknown): value is ArrayLike<T> => !is.nullO
type TypeGuard<T> = (value: unknown) => value is T;

// eslint-disable-next-line @typescript-eslint/ban-types
type ResolveTypesOfTypeGuardsTuple<TypeGuardsOfT, ResultOfT extends unknown[] = [] > = TypeGuardsOfT extends [TypeGuard<infer U>, ...infer TOthers] ? ResolveTypesOfTypeGuardsTuple<TOthers, [...ResultOfT, U]> : TypeGuardsOfT extends undefined[] ? ResultOfT : never;
type ResolveTypesOfTypeGuardsTuple<TypeGuardsOfT, ResultOfT extends unknown[] = [] > =
TypeGuardsOfT extends [TypeGuard<infer U>, ...infer TOthers]
? ResolveTypesOfTypeGuardsTuple<TOthers, [...ResultOfT, U]>
: TypeGuardsOfT extends undefined[]
? ResultOfT
: never;

is.tupleLike = <T extends Array<TypeGuard<unknown>>>(value: unknown, guards: [...T]): value is ResolveTypesOfTypeGuardsTuple<T> => {
if (is.array(guards) && is.array(value) && guards.length === value.length) {
Expand Down

0 comments on commit 0fee49d

Please sign in to comment.