Bird
Raised Fist0
Typescriptprogramming~3 mins

Why Class implementing multiple interfaces in Typescript? - Purpose & Use Cases

Choose your learning style10 modes available
The Big Idea

What if you could give one class many clear jobs without mixing things up?

The Scenario

Imagine you have a robot that needs to do many jobs: it can clean, cook, and also entertain guests. If you try to write separate instructions for each job manually every time you build a new robot, it becomes confusing and hard to keep track.

The Problem

Writing all the instructions for each robot from scratch is slow and easy to mess up. You might forget some steps or mix up the order. It's like trying to remember every detail without a checklist, which leads to mistakes and wasted time.

The Solution

Using a class that implements multiple interfaces is like giving the robot a clear set of checklists for each job it can do. The class promises to follow all these checklists, so you know exactly what the robot can do and how. This keeps things organized and easy to manage.

Before vs After
✗ Before
class Robot {
  clean() { /* cleaning code */ }
  cook() { /* cooking code */ }
  entertain() { /* entertaining code */ }
}
✓ After
interface Cleaner { clean(): void; }
interface Cook { cook(): void; }
interface Entertainer { entertain(): void; }

class Robot implements Cleaner, Cook, Entertainer {
  clean() { /* cleaning code */ }
  cook() { /* cooking code */ }
  entertain() { /* entertaining code */ }
}
What It Enables

This lets you build clear, organized programs where one class can promise to do many different jobs, making your code easier to understand and reuse.

Real Life Example

Think of a smartphone app that can send messages, play music, and track fitness. Each feature is like an interface, and the app class implements all of them to work smoothly together.

Key Takeaways

Manual coding for multiple roles is confusing and error-prone.

Implementing multiple interfaces organizes responsibilities clearly.

It makes your code easier to read, maintain, and expand.

Practice

(1/5)
1.

What does it mean when a TypeScript class implements multiple interfaces?

Choose the best explanation.

easy
A. The class inherits code from all those interfaces.
B. The class promises to have all methods and properties from all those interfaces.
C. The class can only use one interface at a time.
D. The class automatically creates instances of those interfaces.

Solution

  1. Step 1: Understand what interfaces define

    Interfaces describe method and property shapes but do not provide code.
  2. Step 2: Understand what implementing multiple interfaces means

    A class implementing multiple interfaces must provide all methods and properties from each interface.
  3. Final Answer:

    The class promises to have all methods and properties from all those interfaces. -> Option B
  4. Quick Check:

    Implementing multiple interfaces means fulfilling all their contracts [OK]
Hint: Implementing means fulfilling all interface contracts [OK]
Common Mistakes:
  • Thinking interfaces provide code to inherit
  • Believing a class can only implement one interface
  • Confusing interfaces with classes
2.

Which of the following is the correct syntax for a class Car implementing two interfaces Engine and Wheels?

easy
A. class Car implements Engine, Wheels {}
B. class Car extends Engine, Wheels {}
C. class Car implements (Engine & Wheels) {}
D. class Car inherits Engine, Wheels {}

Solution

  1. Step 1: Recall TypeScript syntax for multiple interfaces

    Use implements Interface1, Interface2 to implement multiple interfaces.
  2. Step 2: Check each option

    class Car implements Engine, Wheels {} uses correct syntax. The options using extends and inherits use invalid keywords. class Car implements (Engine & Wheels) {} uses invalid parentheses and &.
  3. Final Answer:

    class Car implements Engine, Wheels {} -> Option A
  4. Quick Check:

    Multiple interfaces use comma-separated list after implements [OK]
Hint: Use comma-separated interfaces after implements keyword [OK]
Common Mistakes:
  • Using extends instead of implements for interfaces
  • Trying to use & or parentheses in implements clause
  • Using inherits keyword which doesn't exist
3.

Consider these interfaces and class:

interface A { foo(): string; }
interface B { bar(): number; }

class C implements A, B {
  foo() { return "hello"; }
  bar() { return 42; }
}

const c = new C();
console.log(c.foo(), c.bar());

What is the output?

medium
A. hello 42
B. SyntaxError
C. [object Object] 42
D. "hello 42"

Solution

  1. Step 1: Understand method return values

    Method foo() returns string "hello" and bar() returns number 42.
  2. Step 2: Understand console.log output

    console.log prints values separated by space without quotes for strings.
  3. Final Answer:

    hello 42 -> Option A
  4. Quick Check:

    Method returns printed as values without quotes [OK]
Hint: console.log prints string without quotes, separated by spaces [OK]
Common Mistakes:
  • Expecting quotes around string output
  • Confusing object output with string
  • Thinking code causes syntax error
4.

What is wrong with this TypeScript code?

interface X { doX(): void; }
interface Y { doY(): void; }

class Z implements X, Y {
  doX() { console.log("X done"); }
}
medium
A. Method doX() should return a value.
B. Class Z cannot implement two interfaces at once.
C. Class Z must implement method doY() from interface Y.
D. Interfaces cannot be implemented by classes.

Solution

  1. Step 1: Check all interface methods

    Interface Y requires method doY() which is missing in class Z.
  2. Step 2: Understand TypeScript rules for implementing interfaces

    A class must implement all methods from all interfaces it declares.
  3. Final Answer:

    Class Z must implement method doY() from interface Y. -> Option C
  4. Quick Check:

    All interface methods must be implemented [OK]
Hint: Implement all methods from every interface listed [OK]
Common Mistakes:
  • Thinking partial implementation is allowed
  • Confusing interfaces with classes
  • Believing interfaces provide code
5.

You have these interfaces:

interface Printer { print(): void; }
interface Scanner { scan(): string; }

Write a class AllInOne that implements both interfaces and stores the last scanned text in a property lastScan. Which code snippet correctly implements this?

hard
A. class AllInOne implements Printer, Scanner { lastScan = ""; print() { console.log("Printing..."); } }
B. class AllInOne implements Printer, Scanner { print() { console.log("Printing..."); } scan() { return "document"; } }
C. class AllInOne implements Printer, Scanner { lastScan: string; print() { console.log("Printing..."); } scan() { return this.lastScan; } }
D. class AllInOne implements Printer, Scanner { lastScan = ""; print() { console.log("Printing..."); } scan() { this.lastScan = "document"; return this.lastScan; } }

Solution

  1. Step 1: Check interface methods implemented

    Printer requires print(), Scanner requires scan(). class AllInOne implements Printer, Scanner { lastScan = ""; print() { console.log("Printing..."); } scan() { this.lastScan = "document"; return this.lastScan; } } implements both.
  2. Step 2: Check lastScan property usage

    class AllInOne implements Printer, Scanner { lastScan = ""; print() { console.log("Printing..."); } scan() { this.lastScan = "document"; return this.lastScan; } } initializes lastScan and updates it inside scan(), fulfilling the requirement.
  3. Final Answer:

    class AllInOne implements Printer, Scanner { lastScan = ""; print() { console.log("Printing..."); } scan() { this.lastScan = "document"; return this.lastScan; } } -> Option D
  4. Quick Check:

    Implement all methods and update lastScan property [OK]
Hint: Implement all methods and update properties as required [OK]
Common Mistakes:
  • Omitting one interface method
  • Not updating lastScan property
  • Declaring property but not initializing or updating it
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