Typeclass for action
npm install @action-land/coreCore library for action.
- Installation
- Specification
- Action
- API
- action
- isAction
- Nil
- List
- isList
- Related Libraries
```
npm i @action-land/core
1. An Action consists of two properties viz. type and value.action.type
2. is of type string or number.action.value
3. is of type any. It could also be of type Action
4. The object is an immutable and should never be updated.
An action is an object which contains two properties — type and value.
`ts`
interface Action
type: string
value: T
}
A utility that helps in creating a new object of action type. The function is curried by default and provides type guarantee.
`ts
import {action} from '@action-land/core'
action('click', {x: 10, y: 20})
action('click')({x: 10, y: 20}) // curried version
`
A utility function that detects if the object is of Action type.
`ts
import {isAction} from '@action-land/core'
isAction({}) // returns false
isAction(action('WWW', null)) // returns true
`
A default action that represents nothingness.
`ts
import {Nil} from '@action-land/core'
function logic(a: number) {
if (a > 10) return action('greater', a - 10)
if (a < 10) return action('lesser', 10 - a)
return Nil
}
`
A utility function that creates an Action from a list of Action[].
`ts
import {List} from '@action-land/core'
const list = List(action('A', 1), action('B', 2))
`
A utility function that checks if the action is of list type
`ts
import {isList} from '@action-land/core'
const list = List(action('A', 1), action('B', 2))
isList(list) //true
`
A utility function that checks if the action is of Nil
`ts
import {isNil, Nil} from '@action-land/core'
isNil(Nil) // true
isNil({type: '@@NIL', value: {}}) // true
isNil({type: 'click', value: {}}) // false
``