Functional Javascript library with Typescript support. You can use this library to solve the most common problems you're facing while developing.
Some of the functional solutions are:
- map
- curry
- compose
- and many many more...
We've also created our own awesome (functional) helpers like a:
- Switch
(switch case on steroids)
- more are comming...
NOTE: This package can be used as a standalone library and is completely independent of other packages
You can install this library with one of the following commands depending on the package manager you are using.
$ npm install --save-dev functional-lib
$ yarn add --dev functional-lib
You can find all the code examples in the projects folder ./examples
.
Some quick functional solution examples:
import { map } from 'functional-lib';
interface IUser{
firstname:string;
lastname:string;
}
const users:IUser[] = [
{
firstname: 'Manuela',
lastname: 'Joyce',
},
{
firstname: 'Maritza',
lastname: 'Mathews',
},
{
firstname: 'Jodi',
lastname: 'Gilliam',
}
];
const mapUsername = (user:IUser) => `${user.firstname} ${user.lastname}`;
const names:string[] = map(users, mapUsername);
// names = ['Manuela Joyce', 'Maritza Mathews', 'Jodi Gilliam']
import { curry } from 'functional-lib';
const add = (x:number, y:number) => x + y;
const curriedAdd = curry(add);
curriedAdd(1, 2); // 3
const addOne = curriedAdd(1);
addOne(2); // 3
Some quick awesome helper examples:
import { Switch } from 'functional-lib';
const switchCase = new Switch(3)
.case(() => 9 / 3)
.do((switchClass:Switch) => {
switchClass.parse('case 3 value');
})
.case(2)
.do((switchClass) => {
switchClass.pipe('case 2 value');
})
.else((parse) => {
parse('fallback value');
});
switchCase.value // 'case 3 value'
If you're missing out on things or have some great idea's, please come up with suggestions so we can make this library even more AWESOME! Or help us out by contributing.
Please read our Contribution Guide for more information about development.
License: ISC