Functional dispatch library
!npm (scoped)
!CircleCI
!David (path)
!Codecov
!npm bundle size (scoped)
!GitHub
1. Introduction
2. Installation
3. API reference
- getType
- identity
- is
- isIn
- types
4. License
The library contains a collection of dispatch functions.
All functions with the arity (number of arguments) greater than one are automatically curried, so a partial application is possible.
The library has built-in type definitions, which provide an excellent IDE support.
Via NPM:
``sh`
npm i @arrows/dispatch
Via Yarn:
`sh`
yarn add @arrows/dispatch
All modules can be imported independently (to reduce bundle size), here are some import methods (you can use either CommonJS or ES modules):
`js`
import dispatch from '@arrows/dispatch'
`js`
import { getType } from '@arrows/dispatch'
`js`
import getType from '@arrows/dispatch/getType'
Retrieves the type of a value (using the internal [[Class]] property).typeof
A more useful alternative for the operator.
It does not return custom prototypes - if you need that, use the is function instead.
_See: types for the list of the most common values._
_See: MDN - Object.prototype.toString.call_
#### Parameters
- value - Any value
#### Returns
- Returns an underlying class as a string.
#### Interface
``
(value) => underlying_class_name
#### Example
`javascript`
getType(1) // -> "Number"
getType(/abc/) // -> "RegExp"
getType([1, 2, 3]) // -> "Array"
---
Standard identity function - useful as a default dispatch or a placeholder.
#### Parameters
- value - Any value
#### Returns
- Returns the argument as-is.
#### Interface
``
(value) => value
#### Example
`javascript`
identity('foo') // -> "foo"
identity([1, 2, 3]) // -> [1, 2, 3]
---
Checks if a value is an instance of a prototype/class.
#### Parameters
- prototype - A prototype/class with which you want to check the value.value
- - Any value
#### Returns
- Returns true is a value is an instance of a prototype/class, false otherwise.
#### Interface
``
(prototype, value) => boolean
#### Example
`javascript
class Cat {}
class Dog {}
const cat = new Cat()
const dog = new Dog()
is(Cat, cat) // -> true
is(Dog, cat) // -> false
is(Cat)(cat) // -> true
is(Dog)(cat) // -> false
`
---
Checks if a value is inside an array/set.
#### Parameters
- list - An array or a set of valuesvalue
- - Any value
#### Returns
- Returns true is a value is inside an array/set, false otherwise.
#### Interface
``
(array_or_set, value) => boolean
#### Examples
`javascript
const names = ['Alice', 'Joe', 'John']
isIn(names, 'Alice') // -> true
isIn(names, 'Bob') // -> false
isIn(names)('Alice') // -> true
isIn(names)('Bob') // -> false
`
`javascript
const names = new Set(['Alice', 'Joe', 'John'])
isIn(names, 'Alice') // -> true
isIn(names, 'Bob') // -> false
isIn(names)('Alice') // -> true
isIn(names)('Bob') // -> false
`
---
An object that contains a list of the most common types to use with the getType function. You can use it instead of using raw strings (which is error-prone).
#### Example
`javascript
getType([1, 2, 3]) === types.Array // -> true
getType(() => null) === types.Function // -> true
getType(Promise.resolve()) === types.Promise // -> true
getType('1') === types.Number // -> false
``
Project is under open, non-restrictive ISC license.