From 9a277dae3c41d04e6dd6d7b7ab6e0cd060586158 Mon Sep 17 00:00:00 2001 From: Dave Cohen Date: Sun, 16 Feb 2020 12:48:14 -0600 Subject: [PATCH] Inline Predicate[] types, simplify array conditional check --- source/index.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/source/index.ts b/source/index.ts index 2c354e6..faabc65 100644 --- a/source/index.ts +++ b/source/index.ts @@ -373,7 +373,6 @@ is.emptyMap = (value: unknown): value is Map => is.map(value) && v is.nonEmptyMap = (value: unknown): value is Map => is.map(value) && value.size > 0; export type Predicate = (value: unknown) => boolean; -export type OverloadedPredicate = Predicate | Predicate[]; type ArrayMethod = (fn: (value: unknown, index: number, array: unknown[]) => boolean, thisArg?: unknown) => boolean; @@ -389,14 +388,11 @@ const predicateOnArray = (method: ArrayMethod, predicate: Predicate, values: unk return method.call(values, predicate); }; -is.any = (predicate: OverloadedPredicate, ...values: unknown[]): boolean => { - if (is.array(predicate) === true) { - return (predicate as Predicate[]).some((singlePredicate: Predicate) => - predicateOnArray(Array.prototype.some, singlePredicate, values) - ); - } - - return predicateOnArray(Array.prototype.some, predicate as Predicate, values); +is.any = (predicate: Predicate | Predicate[], ...values: unknown[]): boolean => { + const predicates = is.array(predicate) ? predicate : [predicate]; + return predicates.some(singlePredicate => + predicateOnArray(Array.prototype.some, singlePredicate, values) + ); }; is.all = (predicate: Predicate, ...values: unknown[]): boolean => predicateOnArray(Array.prototype.every, predicate, values); @@ -536,7 +532,7 @@ interface Assert { inRange: (value: number, range: number | number[]) => asserts value is number; // Variadic functions. - any: (predicate: OverloadedPredicate, ...values: unknown[]) => void | never; + any: (predicate: Predicate | Predicate[], ...values: unknown[]) => void | never; all: (predicate: Predicate, ...values: unknown[]) => void | never; } @@ -626,7 +622,7 @@ export const assert: Assert = { inRange: (value: number, range: number | number[]): asserts value is number => assertType(is.inRange(value, range), AssertionTypeDescription.inRange, value), // Variadic functions. - any: (predicate: OverloadedPredicate, ...values: unknown[]): void | never => assertType(is.any(predicate, ...values), AssertionTypeDescription.any, values), + any: (predicate: Predicate | Predicate[], ...values: unknown[]): void | never => assertType(is.any(predicate, ...values), AssertionTypeDescription.any, values), all: (predicate: Predicate, ...values: unknown[]): void | never => assertType(is.all(predicate, ...values), AssertionTypeDescription.all, values) };