fp-ts README

The project's README from github.com/gcanti/fp-ts. As one markdown file: README.md.

Functional programming in TypeScript

build status npm downloads

📢 Important Announcement: fp-ts is Joining the Effect-TS Ecosystem!

We are excited to announce that the fp-ts project is officially merging with the Effect-TS ecosystem. This is a significant step forward in the functional programming landscape, bringing together two powerful libraries under one roof. Giulio Canti, the author of fp-ts, is being welcomed into the Effect organization, promising an exciting future with enhanced capabilities and support.

What This Means for New Users:

Effect-TS can be regarded as the successor to fp-ts v2 and embodies what would be considered fp-ts v3. This merger marks a significant evolution in the library's capabilities, integrating more features and functionalities tailored towards robust, type-safe, and scalable functional programming.

For more details on this merger and what it entails, please refer to the official announcement here. Additionally, you can explore more about Effect-TS and its offerings on our website and documentation.

Introduction

fp-ts is a library for typed functional programming in TypeScript.

fp-ts aims to allow developers to use popular patterns and abstractions that are available in most functional languages. For this, it includes the most popular data types, type classes and abstractions such as Option, Either, IO, Task, Functor, Applicative, Monad to empower users to write pure FP apps and libraries built atop higher order abstractions.

A distinctive feature of fp-ts with respect to other functional libraries is its implementation of Higher Kinded Types, which TypeScript doesn't support natively.

Inspired by

Sponsors

Unsplash
Unsplash
https://unsplash.com/

The internet’s source for visuals.
Powered by creators everywhere.

Installation

To install the stable version:

npm install fp-ts

Make sure to always have a single version of fp-ts installed in your project. Multiple versions are known to cause tsc to hang during compilation. You can check the versions currently installed using npm ls fp-ts (make sure there's a single version and all the others are marked as deduped).

TypeScript compatibility

Strictness – This library is conceived, tested and is supposed to be consumed by TypeScript with the strict flag turned on.

fp-ts version required typescript version
2.0.x+ 3.5+
1.15.x+ 3.1+
<= 1.14.4 2.8+ (*)

(*) If you are running < [email protected] you have to polyfill the unknown type. You can use unknown-ts as a polyfill.

Documentation

Disclaimer. Teaching functional programming is out of scope of this project, so the documentation assumes you already know what FP is.

Help

If you need help with fp-ts check out:

Development

License

The MIT License (MIT)

fp-ts (gcanti/fp-ts)

Searching Database…

11.5K ·GitHub
这是什么?fp-ts 是一个用于 TypeScript 的类型化函数式编程库,为 TypeScript 应用带来 Option、Either、IO、Task、Functor、Applicative 和 Monad 等模式与抽象。
这是一个需要我围绕它重构应用的框架,还是一个可以按需逐个使用的库?它是一个由可组合数据类型和类型类组成的库,你可以按需导入使用,而不是一个规定应用结构的框架。
我该怎样把它添加到项目中?用 npm 安装稳定版本,并确保项目中只保留一个 fp-ts 版本,以避免编译器卡死。
我的 TypeScript 配置里需要特别设置什么吗?需要。fp-ts 是在启用 strict 标志的 TypeScript 下构建和测试的;不开启 strict 模式使用它,并不是受支持的配置。
这个项目还在积极开发吗?不再积极开发。fp-ts 正在并入 Effect-TS 生态系统,被视为已被取代;Effect-TS 被描述为它的继任者,也就是 fp-ts v3 本会成为的样子。
内置了哪些数据类型和抽象?fp-ts 提供了最常用的函数式编程构建模块,例如 Option、Either、IO、Task、Functor、Applicative 和 Monad 等。
fp-ts 的设计受什么启发?它的设计借鉴了 Haskell、PureScript 和 Scala,把这些语言中类型化的函数式编程模式引入 TypeScript 世界。
为什么 fp-ts 需要自己实现 Higher Kinded Types 的编码?TypeScript 原生不支持高阶类型(Higher Kinded Types),因此 fp-ts 自行实现了一套编码,使 Functor、Monad 等抽象能够通用地工作。
既然 fp-ts 正在并入 Effect-TS,新项目还应该用 fp-ts 吗?README 建议新用户转而使用 Effect-TS,它被描述为 fp-ts 的继任者,也就是 fp-ts v3 本会演变成的样子。
What are similar projects?date-fns, nuqs, lila, recompose, router, ramda, core-js, validator.js
Creator
gcanti
Size
22.6 MB
Stars
11.5K
Age
9y
Commits · 90 Days