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

2.0.1 • Public • Published

gxz

npm GitHub dependencies circleci codecov

🦋 Function Composer with deep typing.

Installation

npm i gxz

🎵 Usage

This composer guarantee the return type of n callback match the parameter type of n+1 callback.

Every callback should only have one parameter, ts will warn you if you have more than one or 0 parameters.

import gxz from 'gxz'

const a = (arg: number) => {
	return arg === 1 ? 'hello' : 'world'
}

const b = (arg: string) => {
	return arg === 'hello'
}

const c = (arg: boolean) => {
	return arg ? 100 : 0
}

const composed = gxz(a, b) // type of `composed` is (arg:number) => boolean

composed(1) // true
composed(2) // false

// type checking
composed('a') // Argument of type 'string' is not assignable to parameter of type 'number'.
gxz(a, c) // Argument of type '(arg: number) => "hello" | "world"' is not assignable to parameter of type '"return type does not match the next argument type"'.
gxz(a) // Argument of type '(arg: number) => "hello" | "world"' is not assignable to parameter of type '"need at least 2 functions"'.

Dependencies (0)

    Dev Dependencies (26)

    Package Sidebar

    Install

    npm i gxz

    Weekly Downloads

    1

    Version

    2.0.1

    License

    MIT

    Unpacked Size

    7.73 kB

    Total Files

    5

    Last publish

    Collaborators

    • tylim