brn
TypeScript icon, indicating that this package has built-in type declarations

1.1.3 • Public • Published

Strongly Typed Functional Branching

brn exports only one function that takes a test, a left, and a right function and return a combined one that will run left if test returns truthy and right otherwise

Example

const brn = require('brn');

const isOdd = x => x % 2;

const left = x => `${x} is odd`;
const right = x => `${x} is even`;

const fn = brn(isOdd, left, right);

console.log(fn(2)); // returns 2 is even
console.log(fn(1)); // returns 1 is odd

TypeScript

import brn from 'brn'

const isOdd = (x: number) => x % 2;

const fn = brn(
  isOdd,
  x => `${x} is odd` as const,
  x => `${x} is even` as const
);

expect(fn(2, 'two')).toBe('2 is even'); // returns 2 is even
expect(fn(1, 'one')).toBe('1 is odd'); // returns 1 is odd

In this example, parameter x in the "left" and "right" functions is typed as number. fn also has return type of `${number} is even` | `${number} is odd`

// another example
function always<X extends string>(x: X) {
  return () => x;
}
const fn = brn(
  (x: number) => x >= 10,
  always(`double digit`),
  brn(
    x => x < 0,
    always('negative'),
    always('single digit')
  )
)

In this example, return type of fn is one of "single digit", "double digit" or "negative".

Package Sidebar

Install

npm i brn

Weekly Downloads

576

Version

1.1.3

License

MIT

Unpacked Size

5.56 kB

Total Files

7

Last publish

Collaborators

  • tungv