Bird
Raised Fist0
Typescriptprogramming~20 mins

Rest elements in tuples in Typescript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Tuple Rest Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of tuple with rest element in function parameter
What is the output of this TypeScript code when calling logTuple([1, 2, 3, 4])?
Typescript
function logTuple([first, ...rest]: [number, ...number[]]) {
  console.log(first, rest.length);
}
logTuple([1, 2, 3, 4]);
A1 3
B1 4
C1 0
DError: Tuple destructuring failed
Attempts:
2 left
💡 Hint
Remember that the rest element collects all remaining items after the first.
❓ Predict Output
intermediate
2:00remaining
Length of tuple with rest element
What is the length of the tuple type T = [string, ...number[]] when assigned const x: T = ['hello', 1, 2, 3]?
Typescript
type T = [string, ...number[]];
const x: T = ['hello', 1, 2, 3];
console.log(x.length);
AError: Tuple length cannot be determined
B3
C1
D4
Attempts:
2 left
💡 Hint
The rest element allows any number of elements after the first.
🔧 Debug
advanced
2:00remaining
Identify the error with rest element in tuple type
Why does this TypeScript code cause an error?
Typescript
type T = [...number[], string];
const x: T = [1, 2, 3, 'end'];
ACannot mix number and string in tuple
BTuple cannot have more than 3 elements
CRest element must be last in tuple type
DNo error, code is valid
Attempts:
2 left
💡 Hint
Check the position of the rest element in the tuple type.
🚀 Application
advanced
2:00remaining
Function parameter with tuple rest element
Which function signature correctly accepts a tuple with a string followed by any number of booleans?
Afunction f([name, ...flags]: [string, ...boolean[]]) {}
Bfunction f([name, ...flags]: [...boolean[], string]) {}
Cfunction f([name, ...flags]: [string, boolean]) {}
Dfunction f([name, ...flags]: [boolean, ...string[]]) {}
Attempts:
2 left
💡 Hint
Rest element must be last and match the type of remaining elements.
🧠 Conceptual
expert
3:00remaining
Rest elements and tuple inference behavior
Given const t = [1, 2, 3] as const; and type T = [number, ...number[]];, what is the inferred type of t and does it satisfy T?
Typescript
const t = [1, 2, 3] as const;
type T = [number, ...number[]];
A<code>t</code> is readonly [1, 2, 3] but does not satisfy <code>T</code>
B<code>t</code> is readonly [1, 2, 3] and satisfies <code>T</code>
C<code>t</code> is mutable number[] and satisfies <code>T</code>
D<code>t</code> is mutable number[] but does not satisfy <code>T</code>
Attempts:
2 left
💡 Hint
Consider how as const affects tuple types and readonly status.

Practice

(1/5)
1.

What is the main purpose of using rest elements in TypeScript tuples?

easy
A. To define the exact fixed length of a tuple
B. To make tuples immutable
C. To allow tuples to contain only one type of element
D. To collect multiple elements into a single tuple part

Solution

  1. Step 1: Understand rest elements in tuples

    Rest elements gather multiple items into one part of a tuple, allowing flexible length.
  2. Step 2: Identify the purpose

    This means rest elements help collect many elements into one part of a tuple, not fix length or types.
  3. Final Answer:

    To collect multiple elements into a single tuple part -> Option D
  4. Quick Check:

    Rest elements collect multiple items [OK]
Hint: Rest elements gather extra items [OK]
Common Mistakes:
  • Thinking rest elements fix tuple length
  • Using ... without array type
  • Confusing rest elements with tuple immutability
2.

Which of the following is the correct syntax for a tuple with a rest element in TypeScript?

type MyTuple = [number, ...string[]];
easy
A. type MyTuple = [number, string...];
B. type MyTuple = [...number, string[]];
C. type MyTuple = [number, ...string[]];
D. type MyTuple = [number, ...string];

Solution

  1. Step 1: Check rest element syntax

    Rest elements use three dots (...) before a type array, placed at the end.
  2. Step 2: Validate each option

    type MyTuple = [number, ...string[]]; correctly uses [...string[]] after number. Others misuse syntax or placement.
  3. Final Answer:

    type MyTuple = [number, ...string[]]; -> Option C
  4. Quick Check:

    Rest element syntax = ...type[] at end [OK]
Hint: Rest element syntax: ...type[] at tuple end [OK]
Common Mistakes:
  • Placing rest element in the middle
  • Omitting brackets around rest type
  • Using ...type instead of ...type[]
3.

What will be the output of the following TypeScript code?

type Tuple = [string, ...number[]];
const example: Tuple = ['start', 1, 2, 3];
console.log(example.length);
medium
A. 1
B. 4
C. Error
D. 3

Solution

  1. Step 1: Understand tuple and rest element

    The tuple starts with a string, then any number of numbers via rest element.
  2. Step 2: Count elements in example

    example has 'start', 1, 2, 3 which is 4 elements total.
  3. Final Answer:

    4 -> Option B
  4. Quick Check:

    Tuple length counts all elements including rest [OK]
Hint: Tuple length includes rest elements count [OK]
Common Mistakes:
  • Counting only fixed elements ignoring rest
  • Expecting error due to rest element
  • Confusing tuple length with rest array length
4.

Identify the error in this tuple type declaration:

type WrongTuple = [...string, number];
medium
A. Rest element must be an array type
B. Rest element must be at the end of the tuple
C. Tuple cannot have more than two elements
D. Number type cannot be used in tuples

Solution

  1. Step 1: Check rest element syntax

    Rest elements must use an array or tuple type after ..., like ...string[].
  2. Step 2: Analyze given tuple

    Here, ...string uses primitive string, not array/tuple type, invalid syntax.
  3. Final Answer:

    Rest element must be an array type -> Option A
  4. Quick Check:

    Rest element type = array/tuple only [OK]
Hint: Rest element requires array/tuple type [OK]
Common Mistakes:
  • Using ... with non-array type like ...string
  • Thinking rest element can't be array type
  • Confusing tuple length limits
5.

Given the tuple type type Data = [string, ...number[], boolean], which of the following assignments is valid?

A) const a: Data = ['hello', 1, 2, true];
B) const b: Data = ['hello', 42];
C) const c: Data = ['hello', 1, 2, 3, false];
D) const d: Data = ['hello', 1, false, 2];
hard
A. Only A and C are valid
B. Only B and D are valid
C. Only C is valid
D. Only D is valid

Solution

  1. Step 1: Understand tuple with rest element in middle

    Type [string, ...number[], boolean] means string first, then any numbers, then boolean last.
  2. Step 2: Check each assignment

    A) Ends with true (boolean), numbers in middle: ['hello',1,2,true] valid.
    B) Missing boolean after numbers, only string and number: invalid.
    C) Ends with false (boolean), numbers in middle: valid.
    D) Boolean before number (false before 2): invalid order.
  3. Final Answer:

    Only A and C are valid -> Option A
  4. Quick Check:

    Rest numbers must be between string and boolean [OK]
Hint: Rest numbers must be between first string and last boolean [OK]
Common Mistakes:
  • Placing boolean before rest numbers
  • Omitting rest numbers entirely
  • Assuming rest can be anywhere
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