Bird
Raised Fist0
Typescriptprogramming~20 mins

Why typed classes matter in Typescript - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Typed Classes Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this typed class example?

Consider this TypeScript class with typed properties and a method. What will be printed when the code runs?

Typescript
class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  greet(): string {
    return `Hello, my name is ${this.name} and I am ${this.age} years old.`;
  }
}

const p = new Person("Alice", 30);
console.log(p.greet());
A"Hello, my name is Alice and I am 30 years old."
BSyntaxError: Unexpected token
CTypeError: Cannot read property 'name' of undefined
D"Hello, my name is undefined and I am undefined years old."
Attempts:
2 left
💡 Hint

Look at how the constructor assigns values to the typed properties.

🧠 Conceptual
intermediate
1:30remaining
Why does TypeScript require types in classes?

Which of the following best explains why typed classes are important in TypeScript?

AThey make the code run faster at runtime by optimizing memory.
BThey automatically generate user interfaces based on class definitions.
CThey allow classes to be used only in browsers that support types.
DThey help catch errors early by ensuring properties and methods have expected types.
Attempts:
2 left
💡 Hint

Think about what types help with before running the code.

🔧 Debug
advanced
2:00remaining
What error does this typed class code produce?

Examine this TypeScript class code. What error will occur when compiling?

Typescript
class Car {
  model: string;
  year: number;

  constructor(model: string) {
    this.model = model;
  }

  getAge(currentYear: number): number {
    return currentYear - this.year;
  }
}
AProperty 'year' has no initializer and is not definitely assigned in the constructor.
BTypeError: Cannot read property 'year' of undefined
CSyntaxError: Unexpected token in constructor
DNo error, code compiles successfully
Attempts:
2 left
💡 Hint

Check if all typed properties are assigned values in the constructor.

📝 Syntax
advanced
1:30remaining
Which option correctly defines a typed class with a readonly property?

Choose the correct TypeScript class definition where id is a readonly number property set in the constructor.

Aclass User { id: readonly number; constructor(id: number) { this.id = id; } }
Bclass User { readonly id: number; constructor(id: number) { this.id = id; } }
Cclass User { readonly id; constructor(id: number) { this.id = id; } }
Dclass User { id: number readonly; constructor(id: number) { this.id = id; } }
Attempts:
2 left
💡 Hint

Remember the correct order of modifiers and types in TypeScript.

🚀 Application
expert
2:30remaining
How many properties does this typed class instance have?

Given this TypeScript class and instance, how many own properties does the instance book have?

Typescript
class Book {
  title: string;
  author: string;
  static category: string = "Literature";

  constructor(title: string, author: string) {
    this.title = title;
    this.author = author;
  }
}

const book = new Book("1984", "George Orwell");
const count = Object.keys(book).length;
console.log(count);
A1
B3
C2
D0
Attempts:
2 left
💡 Hint

Static properties are not part of instance own properties.

Practice

(1/5)
1. Why are typed classes important in TypeScript?
easy
A. They make the code run faster at runtime.
B. They allow writing code without any rules.
C. They help catch errors before running the code.
D. They remove the need for functions.

Solution

  1. Step 1: Understand typed classes role

    Typed classes define what kind of data each property should hold, helping catch mistakes early.
  2. Step 2: Identify the benefit

    This early error detection happens before running the program, improving code safety.
  3. Final Answer:

    They help catch errors before running the code. -> Option C
  4. Quick Check:

    Typed classes catch errors early = B [OK]
Hint: Typed classes catch mistakes early, not speed up runtime [OK]
Common Mistakes:
  • Thinking typed classes speed up code execution
  • Believing typed classes remove the need for functions
  • Assuming typed classes allow ignoring data rules
2. Which of the following is the correct way to declare a typed class property in TypeScript?
easy
A. class User { name = string; }
B. class User { name: string; }
C. class User { string name; }
D. class User { name -> string; }

Solution

  1. Step 1: Recall TypeScript property syntax

    In TypeScript, properties are declared with a colon between name and type, like name: string;.
  2. Step 2: Check each option

    class User { name: string; } uses correct syntax. Options A, B, and C use invalid syntax.
  3. Final Answer:

    class User { name: string; } -> Option B
  4. Quick Check:

    Property declaration uses colon = D [OK]
Hint: Use colon between property and type in classes [OK]
Common Mistakes:
  • Using equals sign instead of colon for type
  • Placing type before property name
  • Using arrows or other symbols instead of colon
3. What will be the output of this TypeScript code?
class Product {
  name: string;
  price: number;
  constructor(name: string, price: number) {
    this.name = name;
    this.price = price;
  }
  display() {
    return `${this.name} costs $${this.price}`;
  }
}
const item = new Product('Book', 15);
console.log(item.display());
medium
A. Book costs $15
B. Book costs $15.00
C. undefined costs $15
D. Error: price is not a string

Solution

  1. Step 1: Understand class and constructor

    The constructor sets name to 'Book' and price to 15.
  2. Step 2: Check display method output

    The display method returns a string combining name and price exactly as "Book costs $15".
  3. Final Answer:

    Book costs $15 -> Option A
  4. Quick Check:

    Display method returns formatted string = C [OK]
Hint: Check constructor values and string template output [OK]
Common Mistakes:
  • Expecting price to show decimals automatically
  • Confusing undefined property values
  • Thinking type mismatch causes runtime error here
4. Identify the error in this TypeScript class and fix it:
class Person {
  age: number;
  constructor(age: string) {
    this.age = age;
  }
}
medium
A. Change constructor parameter type to number
B. Change property type to string
C. Remove type annotations completely
D. No error, code is correct

Solution

  1. Step 1: Compare property and constructor types

    The property age is a number, but constructor expects a string parameter.
  2. Step 2: Fix type mismatch

    Change constructor parameter type to number to match property type.
  3. Final Answer:

    Change constructor parameter type to number -> Option A
  4. Quick Check:

    Property and parameter types must match = A [OK]
Hint: Match constructor parameter types with property types [OK]
Common Mistakes:
  • Ignoring type mismatch between property and parameter
  • Changing property type unnecessarily
  • Assuming no error when types differ
5. You want to create a typed class in TypeScript that holds a list of users with their names and ages. Which approach best ensures type safety and easy maintenance?
hard
A. Use a class with properties typed as strings only.
B. Use a class with any type for properties to allow flexibility.
C. Use plain JavaScript objects without types for faster coding.
D. Use a class with typed properties and an array of user objects typed with an interface.

Solution

  1. Step 1: Consider type safety and maintenance

    Typed properties and interfaces help catch errors and make code clear for teamwork.
  2. Step 2: Evaluate options

    A class with typed properties and an array of user objects typed with an interface ensures safety and clarity. Other options sacrifice safety or clarity.
  3. Final Answer:

    Use a class with typed properties and an array of user objects typed with an interface. -> Option D
  4. Quick Check:

    Typed classes + interfaces = best practice [OK]
Hint: Combine typed classes with interfaces for clear, safe code [OK]
Common Mistakes:
  • Using any type loses type safety
  • Ignoring interfaces reduces code clarity
  • Typing all properties as strings limits data accuracy
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