Package Exports
- @bitty/predicate
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@bitty/predicate) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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/predicateGetting Stated
It exports Predicate and Refinement types.
Predicateis 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)); }
Refinementis similar toPredicate, but uses TypeScriptistype 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.