Parameter properties shorthand in Typescript - Time & Space Complexity
Let's see how using parameter properties shorthand affects the time it takes to create objects in TypeScript.
We want to know how the work grows when making many objects this way.
Analyze the time complexity of the following code snippet.
class Person {
constructor(public name: string, public age: number) {}
}
const people: Person[] = [];
for (let i = 0; i < n; i++) {
people.push(new Person(`Name${i}`, i));
}
This code creates n Person objects using parameter properties shorthand inside the constructor.
- Primary operation: Creating a new Person object inside the loop.
- How many times: The loop runs n times, so object creation happens n times.
Each new object takes a small fixed time, and we do this n times.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 object creations |
| 100 | About 100 object creations |
| 1000 | About 1000 object creations |
Pattern observation: The work grows directly with n; doubling n doubles the work.
Time Complexity: O(n)
This means the time to create all objects grows in a straight line as you add more objects.
[X] Wrong: "Using parameter properties shorthand makes object creation faster in a way that changes time complexity."
[OK] Correct: The shorthand just saves typing; the computer still creates each object one by one, so time grows with n.
Understanding how object creation scales helps you explain code efficiency clearly and confidently in interviews.
"What if we added a nested loop inside the constructor that runs m times? How would the time complexity change?"
Practice
Solution
Step 1: Understand parameter properties shorthand
Parameter properties shorthand uses access modifiers like public, private, or protected before constructor parameters to create and assign class properties automatically.Step 2: Compare with other options
Options B, C, and D describe unrelated features: global variables, getter/setter methods, and module imports, which are not related to parameter properties shorthand.Final Answer:
It creates and assigns class properties in one step using access modifiers. -> Option CQuick Check:
Parameter properties shorthand = create and assign properties [OK]
- Confusing shorthand with getter/setter methods
- Thinking it declares global variables
- Assuming it imports modules
Solution
Step 1: Identify correct parameter properties syntax
The correct syntax places an access modifier (public, private, protected) before the parameter name and type inside the constructor, likeconstructor(public name: string) { }.Step 2: Check other options for errors
constructor(name: string) { this.name = name; } lacks shorthand (no access modifier). constructor(private name) { this.name = name; } misses the type annotation. constructor(name: string public) { } has incorrect modifier placement after the type.Final Answer:
constructor(public name: string) { } -> Option AQuick Check:
Access modifier before parameter = correct syntax [OK]
- Placing access modifier after type
- Omitting type annotation
- Not using access modifier at all
class Person {
constructor(private name: string) {}
greet() {
return `Hello, ${this.name}!`;
}
}
const p = new Person('Anna');
console.log(p.greet());Solution
Step 1: Understand private parameter property
The constructor usesprivate name: string, which creates and assigns a private propertynameautomatically.Step 2: Check greet method output
Thegreet()method accessesthis.nameand returns "Hello, Anna!" because the property was set correctly.Final Answer:
Hello, Anna! -> Option DQuick Check:
Private property set by constructor = correct output [OK]
- Assuming private means inaccessible inside class
- Expecting undefined because no explicit assignment
- Confusing property with parameter
class Car {
constructor(public model) {}
}
const c = new Car('Tesla');
console.log(c.model);Solution
Step 1: Check parameter properties syntax
The constructor parametermodelusespublicbut lacks a type annotation, which is required in TypeScript.Step 2: Verify other options
Cannot use public modifier in constructor. is wrong because public modifier is allowed. Property 'model' is not accessible outside the class. is wrong because public makes property accessible. Constructor must have a return type. is wrong because constructors do not have return types.Final Answer:
Missing type annotation for parameter 'model'. -> Option BQuick Check:
Parameter properties require type annotations [OK]
- Omitting type annotation
- Thinking public is invalid in constructor
- Expecting constructor to have return type
Book that stores title and author as public properties using parameter properties shorthand. Which code correctly implements this and allows creating a Book instance with both properties set?Solution
Step 1: Identify correct use of parameter properties shorthand
Bothtitleandauthormust have access modifiers (public) before their parameters to create public properties automatically.Step 2: Evaluate each option
class Book { constructor(public title: string, author: string) {} } only makestitlepublic;authoris just a parameter, not a property. class Book { constructor(public title: string, public author: string) {} } correctly usespublicfor both. class Book { constructor(title: string, author: string) { this.title = title; this.author = author; } } does not use shorthand but tries to assign properties without declaring them, causing errors. class Book { constructor(title: string, public author: string) {} } only makesauthorpublic,titleis missing.Final Answer:
class Book { constructor(public title: string, public author: string) {} } -> Option AQuick Check:
Use public before all parameters to create properties [OK]
- Adding public to only some parameters
- Assigning properties without declaring them
- Mixing shorthand with manual assignments incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
