Skip to content

Getting Started ​

Introduction ​

FxTS is a library for functional programming using iterable/asyncIterable. It provides users to write more declarative code, as well as to handle asynchronous data and functions.

To build the above, we have many features such as:

  • Lazy evaluation
    • It is a useful way to represent large or possibly infinite enumerable data.
  • Handling concurrent requests
    • It can handle multiple asynchronous requests and also control the count of requests.
  • Type inference
    • Function composition can be inferred.
  • Follow iteration protocols Iterable / AsyncIterable
    • FxTS follows the protocol of the language standard. This means that it matches well with existing functions and functions that will be added in the future.

Installation ​

NPM ​

shell
npm install @fxts/core

Yarn ​

shell
yarn add @fxts/core

Usage ​

TypeScript ​

ts
import { filter, map, pipe, range, reduce, take } from "@fxts/core";

const sum = pipe(
  range(Infinity),
  filter((a) => a % 5 === 0),
  map((a) => a * 10),
  take(10),
  reduce((a, b) => a + b),
); // typeof 'sum' inferred as the number

Note: It is recommended to enable strictFunctionTypes, strictNullChecks tsc option. If not, type inference does not work as we expected. For example, in the example above, sum is not inferred as a number type if the option is turned off.

JavaScript ​

Usage is the same as TypeScript, but there are several points to note.

ESM ​

As shown in the example code below, the module imported by default was built targeting es2018 and does not include polyfill.

javascript
import { filter, map, pipe, range, reduce, take } from "@fxts/core";

CJS ​

javascript
const { filter, map, pipe, range, reduce } = require("@fxts/core");

// It can be loaded as an individual function
const take = require("@fxts/core/Lazy/take").default;

Note: The cjs and esm submodules are built targeting es2018 (Node.js 10+ and modern JS engines) and do not include polyfill.

CDN ​

This script was built targeting es5 and contains polyfill.

html
<script src="https://cdn.jsdelivr.net/npm/@fxts/core/dist/fx.min.js"></script>

Released under the Apache-2.0 License.