'Is it possible to supply named rest arguments in the type space in TypeScript?

In TypeScript, we can use a Tuple of types to create typesafe rest arguments:

type Params = [string,number,string]

const fn = (...args: Params) => null

// Type is (args_0: string, args_1: number, args_2: string) => null

Is there any way to supply the names of these parameters? Completely in the Type space?

So, instead of having the parameters named args_0, args_1, args_2, I want to explicitly name them (example) myString, myNumber, mySecondString.



Solution 1:[1]

Tuple members can be named, which just works when spread to function arguments:

type Params = [myString: string, myNumber: number, mySecondString: string]

const fn = (...args: Params) => null
// const fn: (myString: string, myNumber: number, mySecondString: string) => null

Playground

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Alex Wayne