similar to sequenceMap, but made for variable number of function argument parameters.

import { assertEquals } from "jsr:@std/assert"

type Vec1 = [number]
type Vec2 = [number, number]
type Vec3 = [string, string, string]

const vec3 = [
[1] as Vec1,
[2, 2] as Vec2,
["halla", "mein", "fuhrer"] as Vec3,
] as const

const vecc = sequenceArgsMap<typeof vec3, [boolean, number, string]>([
(v0) => v0 + 4 > 0 ? true : false,
(v0, v1) => v0 + v1**2,
(s0, ...args) => ([
(s0 === "halla" ? "hello" : "un-greetful"),
...args
].join(" ")),
], vec3)

vecc satisfies (readonly [boolean, number, string])

assertEquals(vecc, [true, 6, "hello mein fuhrer"])
  • Type Parameters

    • A extends readonly unknown[][]
    • U extends { [K in string | number | symbol]: any } = { [K in string | number | symbol]: unknown }
    • D extends unknown = unknown
    • F extends SequenceArgsMapper<A, U, D> = SequenceArgsMapper<A, U, D>

    Parameters

    • mapping_funcs: F
    • input_args: A

    Returns { [K in string | number | symbol]: ReturnType<F[K<K>]> }