Which type to use for rest parameter in a function in TypeScript?

January 5, 2022 - 2 min read

Rest parameter is written after all the other parameters in a function and uses the ... (three-dot syntax) syntax. The rest parameter is an array and should have an associated type associated with the array in Typescript.

TL;DR

// Function that says greeting to all the peoples
function sayGreetingToPeoples(greeting: string, ...peoples: string[]) {
  peoples.forEach((people) => {
    console.log(`${greeting} ${people}`);
  });
}

// call the function
sayGreetingToPeoples("Hi, ", "Roy", "John", "Lily");

/*
OUTPUT
------

Hi,  Roy 
Hi,  John 
Hi,  Lily 
*/

For example, let's say we have a function called sayGreetingToPeoples, where the first parameter is the greeting to say to the people and the second parameter is a rest parameter and is considered as the names of the people that need to be greeted.

It can be done like this,

// says greeting to all the peoples
function sayGreetingToPeoples(greeting, ...peoples) {
  // cool code here
}

Now let's assign the type of string to the greeting parameter and the type of string[] to the peoples rest parameter.

The peoples parameter is a rest parameter and will always be an array type and since we need it to be a string array we are using the string[] syntax.

It can be done like this,

// says greeting to all the peoples
function sayGreetingToPeoples(greeting: string, ...peoples: string[]) {
  // cool code here
}

Let's write the logic for the function inside the function body to greet all the people using a loop.

It can be done like this,

// says greeting to all the peoples
function sayGreetingToPeoples(greeting: string, ...peoples: string[]) {
  peoples.forEach((people) => {
    console.log(`${greeting} ${people}`);
  });
}

Lastly, let's call the sayGreetingToPeoples function like this,

// says greeting to all the peoples
function sayGreetingToPeoples(greeting: string, ...peoples: string[]) {
  peoples.forEach((people) => {
    console.log(`${greeting} ${people}`);
  });
}

// call the function
sayGreetingToPeoples("Hi, ", "Roy", "John", "Lily");

/*
OUTPUT
------

Hi,  Roy 
Hi,  John 
Hi,  Lily 
*/

See the above code live in codesandbox.

That's all 😃!

Feel free to share if you found this useful 😃.