JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 22
  • Score
    100M100P100Q43570F
  • License MIT

Predicate helper functions and types for TypeScript.

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

Bundle minified size Bundle minified and gzipped size

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 to Predicate, but uses TypeScript is 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.