functional-match-case
npm install functional-match-case
yarn add functional-match-case
Example:
Turn:
switch(someValue) {
case A:
case B:
return resultA;
case C:
return resultB;
case D:
return functionC();
default:
return defaultValue;
}
Into:
import matchCase from 'functional-match-case';
const match = matchCase({
[A]: resultA,
[B]: resultA,
[C]: resultB,
[D]: functionC,
})(defaultValue);
match(someValue);
Reusable cases. For example:
export const someMatchCase = {
[A]: resultA,
[B]: resultB,
};
export const anotherMatchCase = {
[C]: resultC,
[D]: functionD,
}
export const yetAnotherMatchCase = {
...someMatchCase,
...anotherMatchCase,
[F]: resultF,
};
Lazy
You could use a simple hash map instead of a switch
. (Assuming no need for a default
case.)
But, if you added functions like this:
const hash = {
keyA: functionA(),
keyB: 401,
keyC: functionC(),
keyD: 200,
}
Then both functions would be executed.
With functional-match-case
you just pass a reference and it will be executed when needed.