Bird
Raised Fist0
Typescriptprogramming~5 mins

Rest parameters with types in Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What are rest parameters in TypeScript?
Rest parameters allow a function to accept an indefinite number of arguments as an array. They are declared using three dots (...) before the parameter name.
Click to reveal answer
beginner
How do you type rest parameters in TypeScript?
You specify the type of the rest parameter as an array type. For example, <code>function sum(...numbers: number[]) {}</code> means <code>numbers</code> is an array of numbers.
Click to reveal answer
intermediate
Can rest parameters have different types in TypeScript?
Yes, you can use union types or tuples to type rest parameters with different types. For example, <code>function example(...args: (string | number)[]) {}</code> accepts strings or numbers.
Click to reveal answer
intermediate
What is the difference between rest parameters and regular array parameters?
Rest parameters gather all remaining arguments into an array automatically, while regular array parameters expect a single array argument. Rest parameters make calling functions easier when passing multiple values.
Click to reveal answer
beginner
Show a simple example of a function using typed rest parameters.
Example:<br><pre>function greetAll(...names: string[]) {<br>  names.forEach(name => console.log(`Hello, ${name}!`));<br>}<br>greetAll('Alice', 'Bob', 'Charlie');</pre>
Click to reveal answer
How do you declare a rest parameter named items that accepts numbers in TypeScript?
Afunction example(...items: number[]) {}
Bfunction example(items: number...) {}
Cfunction example(items: ...number[]) {}
Dfunction example(...items: number) {}
What type does a rest parameter have inside the function?
AA union of all argument types
BA single value of the specified type
CA tuple of fixed length
DAn array of the specified type
Which of these is a valid rest parameter type for accepting strings or numbers?
A...args: (string | number)[]
B...args: string | number
C...args: string[] | number[]
D...args: string & number[]
Can a function have more than one rest parameter?
AYes, any number of rest parameters
BOnly if they are optional
CNo, only one rest parameter is allowed
DYes, but only if they have different types
What happens if you call a function with rest parameters without any arguments?
AThe rest parameter is undefined
BThe rest parameter is an empty array
CThe function throws an error
DThe rest parameter is null
Explain how to use rest parameters with types in a TypeScript function.
Think about how to accept many arguments as one array with a type.
You got /3 concepts.
    Describe the rules and limitations of rest parameters in TypeScript.
    Consider function parameter order and typing.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the rest parameter syntax ...args: number[] do in a TypeScript function?
      easy
      A. It collects all remaining arguments into an array of numbers.
      B. It restricts the function to accept only one number argument.
      C. It declares a single number variable named args.
      D. It spreads an array of numbers into separate arguments.

      Solution

      1. Step 1: Understand rest parameter syntax

        The ...args gathers all extra arguments passed to the function into one array.
      2. Step 2: Recognize the type annotation

        The : number[] means this array contains only numbers.
      3. Final Answer:

        It collects all remaining arguments into an array of numbers. -> Option A
      4. Quick Check:

        Rest parameter with type = collects arguments as typed array [OK]
      Hint: Rest parameters gather extra arguments into a typed array [OK]
      Common Mistakes:
      • Confusing rest parameter with spread operator
      • Thinking it accepts only one argument
      • Ignoring the type annotation on the rest parameter
      2. Which of the following is the correct syntax to declare a function with a rest parameter of strings in TypeScript?
      easy
      A. function greet(...names: string[]) {}
      B. function greet(names: ...string[]) {}
      C. function greet(...names: string) {}
      D. function greet(...names: [string]) {}

      Solution

      1. Step 1: Identify correct rest parameter syntax

        The rest parameter must use ... before the parameter name and be typed as an array type.
      2. Step 2: Check each option

        function greet(...names: string[]) {} uses ...names: string[], which is correct. Others misuse the spread or array syntax.
      3. Final Answer:

        function greet(...names: string[]) {} -> Option A
      4. Quick Check:

        Rest parameter syntax = ...name: type[] [OK]
      Hint: Rest parameter needs ... before name and array type after [OK]
      Common Mistakes:
      • Placing ... after the parameter name
      • Using a single type instead of an array type
      • Using tuple syntax instead of array type
      3. What is the output of this TypeScript code?
      function sum(...nums: number[]) {
        return nums.reduce((a, b) => a + b, 0);
      }
      console.log(sum(1, 2, 3, 4));
      medium
      A. 1234
      B. Error: nums is not iterable
      C. undefined
      D. 10

      Solution

      1. Step 1: Understand rest parameter collects arguments

        The ...nums collects all arguments into an array: [1, 2, 3, 4].
      2. Step 2: Calculate sum using reduce

        The reduce adds all numbers: 1+2=3, 3+3=6, 6+4=10.
      3. Final Answer:

        10 -> Option D
      4. Quick Check:

        Sum of 1,2,3,4 = 10 [OK]
      Hint: Rest gathers numbers; reduce sums them [OK]
      Common Mistakes:
      • Concatenating numbers as strings
      • Forgetting initial value in reduce
      • Misunderstanding rest parameter as single number
      4. Identify the error in this TypeScript function:
      function joinStrings(...strings: string) {
        return strings.join(", ");
      }
      medium
      A. The function should return an array, not a string.
      B. The join method cannot be used on strings.
      C. Rest parameter must be typed as an array, e.g., string[].
      D. Rest parameter cannot be used with strings.

      Solution

      1. Step 1: Check rest parameter type

        The rest parameter must be typed as an array type, like string[], not just string.
      2. Step 2: Understand why join fails

        Since strings is typed as a single string, join method is invalid.
      3. Final Answer:

        Rest parameter must be typed as an array, e.g., string[]. -> Option C
      4. Quick Check:

        Rest parameter type = array type [OK]
      Hint: Rest parameter type must be an array type [OK]
      Common Mistakes:
      • Typing rest parameter as a single element type
      • Trying to call array methods on a non-array
      • Ignoring TypeScript type errors
      5. You want to create a TypeScript function multiplyAll that accepts any number of numeric arguments and returns their product. Which is the best way to type the rest parameter and implement this function?
      hard
      A. function multiplyAll(nums: number[]): number { return nums.reduce((a, b) => a * b); }
      B. function multiplyAll(...nums: number[]): number { return nums.reduce((a, b) => a * b, 1); }
      C. function multiplyAll(...nums: number): number { return nums.reduce((a, b) => a * b, 1); }
      D. function multiplyAll(...nums: any[]): any { return nums.reduce((a, b) => a * b, 0); }

      Solution

      1. Step 1: Choose correct rest parameter typing

        The rest parameter must be typed as number[] to accept multiple numbers.
      2. Step 2: Implement product with correct initial value

        Use reduce with initial value 1 to multiply all numbers correctly.
      3. Step 3: Evaluate options

        function multiplyAll(...nums: number[]): number { return nums.reduce((a, b) => a * b, 1); } matches correct typing and logic. function multiplyAll(nums: number[]): number { return nums.reduce((a, b) => a * b); } lacks rest parameter. function multiplyAll(...nums: number): number { return nums.reduce((a, b) => a * b, 1); } has wrong type. function multiplyAll(...nums: any[]): any { return nums.reduce((a, b) => a * b, 0); } uses any and wrong initial value.
      4. Final Answer:

        function multiplyAll(...nums: number[]): number { return nums.reduce((a, b) => a * b, 1); } -> Option B
      5. Quick Check:

        Rest parameter typed number[] and reduce with 1 = correct [OK]
      Hint: Rest parameter as number[] and reduce with 1 for product [OK]
      Common Mistakes:
      • Using single number type instead of array for rest
      • Forgetting initial value in reduce
      • Using any type losing type safety
      • Starting reduce with 0 causing product always 0
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard