📖 Scenario: You are creating a simple class to keep track of how many times a certain action happens across all instances.
🎯 Goal: Build a TypeScript class with a static member that counts how many times a method is called on any instance.
📋 What You'll Learn
Create a class called ActionCounter
Add a static number property called count initialized to 0
Add a method called performAction that increases count by 1
Use proper TypeScript types for the static member and method
Print the static count after calling performAction multiple times
💡 Why This Matters
🌍 Real World
Static members are useful to keep track of data shared across all objects, like counting total users logged in or tracking global settings.
💼 Career
Understanding static members helps in designing classes that manage shared data efficiently, a common task in software development.
Progress0 / 4 steps
1
Create the class with a static count property
Create a class called ActionCounter with a static property count of type number initialized to 0.
Typescript
Hint
Use static keyword before the property name and specify the type number.
2
Add the performAction method
Inside the ActionCounter class, add a method called performAction that increases the static count by 1.
Typescript
Hint
Use ActionCounter.count inside the method to access the static property.
3
Create instances and call performAction
Create two instances of ActionCounter named first and second. Call performAction once on first and twice on second.
Typescript
Hint
Create instances with new ActionCounter() and call the method with dot notation.
4
Print the static count
Print the value of the static count property of ActionCounter using console.log.
Typescript
Hint
Use console.log(ActionCounter.count) to print the static count.
Practice
(1/5)
1. Which statement about static members in TypeScript is true?
easy
A. Static members are private by default.
B. Static members can only be accessed through instances of the class.
C. Static members belong to the class itself, not to instances.
D. Static members must be declared inside the constructor.
Solution
Step 1: Understand what static means
Static members belong to the class itself, not to any object created from the class.
Step 2: Check each option
Static members belong to the class itself, not to instances. correctly states this. Static members can only be accessed through instances of the class. is wrong because static members are accessed via the class, not instances. Static members are private by default. is false; static members can have any access modifier. Static members must be declared inside the constructor. is incorrect; static members are declared outside the constructor.
Final Answer:
Static members belong to the class itself, not to instances. -> Option C
Quick Check:
Static = class-level member [OK]
Hint: Remember: static means class-level, not instance-level [OK]
Common Mistakes:
Thinking static members belong to instances
Trying to access static members via objects
Assuming static members are private by default
2. Which of the following is the correct syntax to declare a static property with type number in a TypeScript class?
easy
A. static count: number = 0;
B. count static: number = 0;
C. static number count = 0;
D. number static count = 0;
Solution
Step 1: Recall static property syntax
In TypeScript, static properties are declared with the keyword static before the property name and type.
Step 2: Check each option
static count: number = 0; uses correct order: static count: number = 0;. Options B, C, and D have incorrect order of keywords or types.
Final Answer:
static count: number = 0; -> Option A
Quick Check:
static + name + : + type + = value [OK]
Hint: Static keyword always comes before property name [OK]
Common Mistakes:
Placing type before static keyword
Swapping order of static and property name
Missing colon between property name and type
3. What will be the output of the following TypeScript code?
class Counter {
static count: number = 0;
increment() {
Counter.count++;
}
}
const c1 = new Counter();
const c2 = new Counter();
c1.increment();
c2.increment();
console.log(Counter.count);
medium
A. 0
B. 1
C. undefined
D. 2
Solution
Step 1: Understand static property usage
The static property count belongs to the class Counter, shared by all instances.
Step 2: Trace the increments
Both c1.increment() and c2.increment() increase Counter.count by 1 each, so total increments = 2.
Final Answer:
2 -> Option D
Quick Check:
Static count increments twice = 2 [OK]
Hint: Static properties are shared; increments add up [OK]
Common Mistakes:
Thinking static count resets per instance
Expecting output 1 instead of 2
Confusing instance and static properties
4. Identify the error in this TypeScript class using static members:
class Example {
static value: string;
constructor() {
this.value = "Hello";
}
}
medium
A. Cannot assign to static property using this inside constructor.
B. Static properties must be initialized outside the class.
C. Static properties cannot have type annotations.
D. Constructor cannot be used with static properties.
Solution
Step 1: Understand static property access
Static properties belong to the class, so they must be accessed via the class name, not this.
Step 2: Identify the error in constructor
Using this.value tries to access an instance property, but value is static. Correct access is Example.value.
Final Answer:
Cannot assign to static property using this inside constructor. -> Option A
Quick Check:
Static accessed via class, not this [OK]
Hint: Use ClassName, not this, to access static members [OK]
Common Mistakes:
Using this to access static properties
Thinking static properties must be initialized outside class
Believing constructor can't coexist with static members
5. Given this TypeScript class, how can you add a static method reset that sets count back to zero?
class Tracker {
static count: number = 0;
static increment() {
this.count++;
}
}
hard
A. Add reset() { Tracker.count = 0; } inside the class.
B. Add static reset() { this.count = 0; } inside the class.
C. Add static reset() { count = 0; } outside the class.
D. Add reset() { this.count = 0; } inside the class.
Solution
Step 1: Define a static method inside the class
Static methods must be declared with the static keyword inside the class.
Step 2: Reset static property using this inside static method
Inside a static method, this refers to the class, so this.count = 0; correctly resets the static property.
Final Answer:
Add static reset() { this.count = 0; } inside the class. -> Option B
Quick Check:
Static method + this resets static property [OK]
Hint: Static methods use static keyword and access static props via this [OK]
Common Mistakes:
Omitting static keyword on method
Using instance method to modify static property
Trying to reset static property outside class without static
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.