@rpearce/ts-fns
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

@rpearce/ts-fns

Public domain (LICENSE) Typescript helper functions for copying & pasting into projects. You can try it out here: https://npm.runkit.com/%40rpearce%2Fts-fns.

Most functions export two calling styles, regular and partial application:

// Regular
hasProp('color', { color: 'blue' }) // true

// Partial application
hasPropU('color')({ color: 'blue' }) // true

Special thanks to the following for helping with some typings!

Typed functions

Note: many functions have a unary, partial application style counterpart ending in U; e.g., cond also exports condU.

TODO

  • both
  • either
  • filter
  • ifElse
  • neither
  • pluckKeys
  • sortAscBy
  • sortDescBy
  • ??? Open an issue to request something!

Usage

Copy the functions and types you need into your project.

Example

import {
  doesPropEq,
  doesPropEqU,
  takeN,
  takeNU,
} from './wherever-i-copied-the-helpers-to'

takeN(3, [1, 2, 3, 4])  // [1, 2, 3]
takeNU(3)([1, 2, 3, 4]) // [1, 2, 3]

doesPropEq('color', 'blue', { a: 'foo', b: 'bar', color: 'blue' })  // true
doesPropEqU('color')('blue')({ a: 'foo', b: 'bar', color: 'blue' }) // true

More in-depth unary partial application example

import { lift2U, propOrU } from './wherever-i-copied-the-helpers-to'

const propOrNA      = propOr('N/A')
const getName       = propOrNA('name')
const getEmail      = propOrNA('email')
const joinWithPipe  = (x: string) => (y: string) => `${x} | ${y}`
const joinNameEmail = lift2U(joinWithPipe)(getName)(getEmail)
const input         = { name: 'bobert', email: 'bobert@email.com', foo: 'bar' }

console.log(joinNameEmail(input))
// 'bobert | bobert@email.com'

Package Sidebar

Install

npm i @rpearce/ts-fns

Weekly Downloads

2

Version

1.1.0

License

Unlicense

Unpacked Size

21.2 kB

Total Files

73

Last publish

Collaborators

  • rpearce