Skip to content
/ ts-belt Public

πŸ”§ Fast, modern, and practical utility library for FP in TypeScript.

License

Notifications You must be signed in to change notification settings

mobily/ts-belt

Repository files navigation

Build Status Coverage npm PRs Welcome All Contributors GitHub license

Fast, modern, and practical utility library for FP in TypeScript.

Documentation

Full documentation can be found here.

Features

  • πŸš€ built with ReScript, which generates highly performant JavaScript code (see the benchmark results here)
  • πŸ‘€ provides more readable code, due to the data-first approach
  • ✨ supports TypeScript and Flow
  • πŸ›‘ helps you write safer code with Option and Result types
  • 🎯 all functions return immutable data (no side-effects)
  • 🌲 tree-shakeable
  • πŸ“ fully documented

Getting started

Installation

yarn add @mobily/ts-belt

or with npm

npm install @mobily/ts-belt --save

Usage

Module Namespace Description
Array A Utility functions for Array.
Boolean B Utility functions for Boolean.
Number N Utility functions for Number.
Object (Dict) D Utility functions for Object.
String S Utility functions for String.
Guards G Various TypeScript guards.
Option O Functions for handling the Option data type that represents the existence and nonexistence of a value.
Result R Functions for describing the result of a certain operation without relying on exceptions.
Function F Other useful functions.
import { A, O, N, pipe } from '@mobily/ts-belt'

pipe(
  [1, 2, 3, 4, 5], // β†’ [1, 2, 3, 4, 5]
  A.dropExactly(2), // β†’ Some([3, 4, 5])
  O.flatMap(A.head), // β†’ Some(3)
  O.map(N.multiply(10)), // β†’ Some(30)
  O.getWithDefault(0), // β†’ 30
) // β†’ 30

Contributors


Marcin Dziewulski

πŸ’» πŸ“– ⚠️ 🎨 🚧

Krzysztof Lenda

πŸ“–

Radek KozieΕ‚

πŸ“–

Artur

πŸ“–

Dominik ŁopaciΕ„ski

πŸ’» πŸ“– ⚠️

Jakub WΔ…sik

πŸ“–

Krystian Mateusiak

πŸ’» πŸ“– ⚠️

MichaΕ‚ Miszczyszyn

πŸ€”

Kevin

πŸ“–

Anthony Khong

πŸ’» πŸ“– ⚠️

Pyrolistical

πŸ“– 🚧 πŸ€”

Mathieu Acthernoene

πŸ€”

License

The MIT License.

See LICENSE