(?='sync'
) sync/async (this depends on your implementation)
(?='multi'
) whether you want it to take a list or parameters
import {F} from 'ts-toolbelt'
/// If you are looking for creating types for `compose`
/// `Composer` will check for input & `Compose` the output
declare const compose: F.Compose
const a = (a1: number) => `${a1}`
const c = (c1: string[]) => [c1]
const b = (b1: string) => [b1]
compose(c, b, a)(42)
/// And if you are looking for an async `compose` type
declare const compose: F.Compose<'async'>
const a = async (a1: number) => `${a1}`
const b = async (b1: string) => [b1]
const c = async (c1: string[]) => [c1]
await compose(c, b, a)(42)
Compose Functions together