@bitty/predicate
v0.2.0
Published
Predicate helper functions and types for TypeScript.
Downloads
26
Readme
@bitty/predicate
Predicate
and Refinement
types for TypeScript.
- 🏷 Safe:
- JSDocs and type declarations for IDEs and editor's autocomplete/intellisense.
- Made with TypeScript as strict as possible.
- Unit tests with AVA.
Installation
This library is published in the NPM registry and can be installed using any compatible package manager.
npm install @bitty/predicate --save
# For Yarn, use the command below.
yarn add @bitty/predicate
Getting Stated
It exports Predicate
and Refinement
types.
Predicate
is a function that receives a value and returns a boolean.import type { Predicate } from '@bitty/predicate'; function checkAll<T = unknown>(predicates: Predicate<T>[]): Predicate<T> { return (value) => predicates.every((predicate) => predicate(value)); }
Refinement
is similar toPredicate
, but uses TypeScriptis
type guard.import { Refinement } from '@bitty/predicate'; const isNumber: Refinement<unknown, number> = (value) => Number.isFinite(value); //=> Was typed as `(value: unknown) => value is number`. const value: number | string = Math.random() > 0.5 ? 100 : 'A text.'; if (isNumber(value)) { console.log(value.toFixed(2)); //=> Okay, because type of `value` was refined to `number`. } console.log(value.toFixed(2)); //=> Property 'toFixed' does not exist on type 'string | number'. // Property 'toFixed' does not exist on type 'string'.
License
Released under MIT License.