Default parameters with types in Typescript - Time & Space Complexity
We want to see how the time it takes to run a function changes when it uses default parameters with types.
Specifically, does adding default values affect how long the function takes as input grows?
Analyze the time complexity of the following code snippet.
function greet(name: string = "Guest", times: number = 1): void {
for (let i = 0; i < times; i++) {
console.log(`Hello, ${name}!`);
}
}
// Calling greet("Alice", 3) prints "Hello, Alice!" 3 times
This function prints a greeting message multiple times, using default values if no arguments are given.
- Primary operation: The for-loop that runs to print the greeting.
- How many times: It runs exactly
timestimes, which depends on input.
Each time we increase the times parameter, the loop runs more times, so the work grows directly with times.
| Input Size (times) | Approx. Operations |
|---|---|
| 10 | 10 prints |
| 100 | 100 prints |
| 1000 | 1000 prints |
Pattern observation: The number of operations grows in a straight line as times increases.
Time Complexity: O(n)
This means the time to run the function grows directly in proportion to the number of times it prints the message.
[X] Wrong: "Default parameters make the function slower or faster depending on their types."
[OK] Correct: Default parameters only set values if none are given; they do not add loops or extra work, so they don't affect how the time grows with input size.
Understanding how default parameters affect time helps you explain function behavior clearly and shows you can analyze code beyond just logic.
What if the function called another function inside the loop that also had a loop? How would the time complexity change?
Practice
What is the main purpose of default parameters in TypeScript functions?
Solution
Step 1: Understand default parameters
Default parameters give a value to a function argument if no value is passed.Step 2: Identify the purpose
This helps avoid errors when arguments are missing by providing fallback values.Final Answer:
To provide fallback values when arguments are missing -> Option AQuick Check:
Default parameters = fallback values [OK]
- Confusing default parameters with return type enforcement
- Thinking default parameters declare variables
- Mixing default parameters with anonymous functions
Which of the following is the correct syntax for a TypeScript function with a default parameter of type number?
function multiply(x: number, y: number = 2) { return x * y; }Solution
Step 1: Check parameter type and default value syntax
In TypeScript, the type annotation comes before the default value:param: type = default.Step 2: Verify each option
function multiply(x: number, y: number = 2) { return x * y; } correctly usesy: number = 2. Others have syntax errors or wrong order.Final Answer:
function multiply(x: number, y: number = 2) { return x * y; } -> Option CQuick Check:
Type before default value = correct syntax [OK]
- Placing default value before type annotation
- Omitting type annotation on default parameter
- Assigning default to wrong parameter
What is the output of the following TypeScript code?
function greet(name: string = "Guest") {
return `Hello, ${name}!`;
}
console.log(greet());
console.log(greet("Alice"));Solution
Step 1: Analyze default parameter usage
Callinggreet()without argument uses default"Guest".Step 2: Check outputs for both calls
First call prints "Hello, Guest!"; second call prints "Hello, Alice!".Final Answer:
Hello, Guest!\nHello, Alice! -> Option BQuick Check:
Default parameter used when argument missing [OK]
- Expecting undefined instead of default value
- Thinking missing argument causes error
- Ignoring template literal output format
Identify the error in this TypeScript function and choose the correct fix:
function calculateArea(width: number = 5, height: number) {
return width * height;
}Solution
Step 1: Understand parameter order rules
In TypeScript, parameters with default values must come after parameters without defaults.Step 2: Fix parameter order
Movingwidthwith default to the end fixes the error.Final Answer:
Move the parameter with default value to the end: function calculateArea(height: number, width: number = 5) {...} -> Option AQuick Check:
Default parameters must be last [OK]
- Placing default parameters before required ones
- Ignoring TypeScript parameter order rules
- Assuming no error when order is wrong
Consider this function that merges two objects with default parameters:
function mergeOptions(options: { verbose?: boolean } = { verbose: false }, defaults: { verbose: boolean } = { verbose: true }) {
return { ...defaults, ...options };
}
console.log(mergeOptions());
console.log(mergeOptions({ verbose: true }));What is the output of the two console.log calls?
Solution
Step 1: Understand default parameter values
Bothoptionsanddefaultshave default objects with verbose flags.Step 2: Analyze object merging
Using spread,{ ...defaults, ...options }merges withoptionsoverridingdefaults.Step 3: Evaluate calls
First call uses defaults:options = { verbose: false },defaults = { verbose: true }, merged result is{ verbose: false }becauseoptionsoverwritesdefaults.Step 4: Check second call
Second call passes{ verbose: true }asoptions, so merged result is{ verbose: true }.Final Answer:
{ verbose: false }\n{ verbose: true } -> Option DQuick Check:
Options override defaults in merge [OK]
- Confusing which object overrides which in spread
- Assuming default parameters merge automatically
- Ignoring optional property in type
Ready to prove it?
Pass the test and this pattern moves unknown
