Bird
Raised Fist0
Typescriptprogramming~5 mins

Implementing interfaces in classes in Typescript

Choose your learning style10 modes available
Introduction

Interfaces help us define a clear shape for objects. Classes can use interfaces to promise they will have certain properties and methods.

When you want to make sure a class has specific properties and methods.
When you want to share a common structure between different classes.
When you want to write code that works with any class that follows the same interface.
When you want to catch mistakes early by checking if a class follows the rules.
When you want to improve code readability by clearly showing what a class should do.
Syntax
Typescript
interface InterfaceName {
  propertyName: type;
  methodName(param: type): returnType;
}

class ClassName implements InterfaceName {
  propertyName: type;
  constructor(...) { ... }
  methodName(param: type): returnType {
    // method body
  }
}

The implements keyword is used to make a class follow an interface.

All properties and methods from the interface must be in the class.

Examples
This example shows a class Dog that promises to have a name and a makeSound method as defined in the Animal interface.
Typescript
interface Animal {
  name: string;
  makeSound(): void;
}

class Dog implements Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  makeSound() {
    console.log('Woof!');
  }
}
Here, Car implements Vehicle interface, so it must have speed and move method.
Typescript
interface Vehicle {
  speed: number;
  move(distance: number): void;
}

class Car implements Vehicle {
  speed: number;
  constructor(speed: number) {
    this.speed = speed;
  }
  move(distance: number) {
    console.log(`Car moved ${distance} meters at speed ${this.speed}`);
  }
}
Sample Program

This program defines a Person interface and a Student class that implements it. The Student class has the required properties and method. When we create a Student and call greet, it prints a greeting message.

Typescript
interface Person {
  firstName: string;
  lastName: string;
  greet(): void;
}

class Student implements Person {
  firstName: string;
  lastName: string;

  constructor(firstName: string, lastName: string) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  greet() {
    console.log(`Hello, my name is ${this.firstName} ${this.lastName}.`);
  }
}

const student = new Student('Alice', 'Johnson');
student.greet();
OutputSuccess
Important Notes

If a class misses any property or method from the interface, TypeScript will show an error.

Interfaces only exist during development for checking types; they do not create code in JavaScript.

You can implement multiple interfaces by separating them with commas.

Summary

Interfaces define what properties and methods a class must have.

Use implements keyword in a class to follow an interface.

This helps catch errors early and makes code easier to understand.

Practice

(1/5)
1. What does the implements keyword do in a TypeScript class?
easy
A. It ensures the class follows the structure defined by an interface.
B. It creates a new interface inside the class.
C. It imports an interface from another file.
D. It automatically generates methods for the class.

Solution

  1. Step 1: Understand the role of interfaces

    Interfaces define a contract of properties and methods that a class must have.
  2. Step 2: Role of implements keyword

    The implements keyword makes sure the class follows that contract exactly.
  3. Final Answer:

    It ensures the class follows the structure defined by an interface. -> Option A
  4. Quick Check:

    implements enforces interface structure [OK]
Hint: Remember: implements means 'follow the interface rules' [OK]
Common Mistakes:
  • Thinking implements creates or imports interfaces
  • Believing implements auto-generates code
  • Confusing implements with extends
2. Which of the following is the correct syntax to make a class Car implement an interface Vehicle?
easy
A. interface Car implements Vehicle {}
B. class Car implements Vehicle {}
C. class Car extends Vehicle {}
D. class Car uses Vehicle {}

Solution

  1. Step 1: Identify correct keywords for class and interface

    Classes use the keyword implements to follow interfaces.
  2. Step 2: Check syntax correctness

    class Car implements Vehicle {} is the correct way to declare this.
  3. Final Answer:

    class Car implements Vehicle {} -> Option B
  4. Quick Check:

    Class uses implements for interfaces [OK]
Hint: Use 'implements' keyword after class name for interfaces [OK]
Common Mistakes:
  • Using extends instead of implements for interfaces
  • Trying to implement interface in interface declaration
  • Using 'uses' keyword which doesn't exist
3. What will be the output of this code?
interface Animal {
  name: string;
  speak(): string;
}

class Dog implements Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
  speak() {
    return `${this.name} says woof`;
  }
}

const dog = new Dog('Buddy');
console.log(dog.speak());
medium
A. undefined
B. "Dog says woof"
C. "Buddy says woof"
D. Error: Dog does not implement speak()

Solution

  1. Step 1: Check class implements interface correctly

    Dog class has property name and method speak() as required.
  2. Step 2: Understand method output

    speak() returns a string with the dog's name and 'says woof'.
  3. Final Answer:

    "Buddy says woof" -> Option C
  4. Quick Check:

    Method returns correct string with name [OK]
Hint: Look for method return values matching console.log output [OK]
Common Mistakes:
  • Assuming missing method error when method exists
  • Confusing property values with method output
  • Ignoring string template usage
4. Identify the error in this code:
interface Shape {
  area(): number;
}

class Circle implements Shape {
  radius: number;
  constructor(radius: number) {
    this.radius = radius;
  }
  area(): string {
    return (Math.PI * this.radius * this.radius).toFixed(2);
  }
}
medium
A. Method area() returns string instead of number.
B. Missing constructor in Circle class.
C. radius property is not declared.
D. Circle should extend Shape, not implement.

Solution

  1. Step 1: Check interface method signature

    Interface Shape requires area() to return a number.
  2. Step 2: Compare with class method return type

    Circle's area() returns a string because toFixed() returns string.
  3. Final Answer:

    Method area() returns string instead of number. -> Option A
  4. Quick Check:

    Return type must match interface [OK]
Hint: Match method return types exactly with interface [OK]
Common Mistakes:
  • Returning string when interface expects number
  • Forgetting to declare properties
  • Using extends instead of implements for interfaces
5. You have two interfaces:
interface Printer {
  print(): void;
}
interface Scanner {
  scan(): void;
}

How can you create a class AllInOneMachine that implements both interfaces correctly?
hard
A. interface AllInOneMachine implements Printer, Scanner {}
B. class AllInOneMachine implements Printer { print() { console.log('Printing'); } scan() { console.log('Scanning'); } }
C. class AllInOneMachine extends Printer, Scanner { print() { console.log('Printing'); } scan() { console.log('Scanning'); } }
D. class AllInOneMachine implements Printer, Scanner { print() { console.log('Printing'); } scan() { console.log('Scanning'); } }

Solution

  1. Step 1: Understand multiple interface implementation

    TypeScript allows a class to implement multiple interfaces separated by commas.
  2. Step 2: Check class methods match all interfaces

    Class must have both print() and scan() methods.
  3. Final Answer:

    class AllInOneMachine implements Printer, Scanner { print() { console.log('Printing'); } scan() { console.log('Scanning'); } } -> Option D
  4. Quick Check:

    Multiple interfaces implemented with comma [OK]
Hint: Use comma to implement multiple interfaces in one class [OK]
Common Mistakes:
  • Using extends instead of implements for interfaces
  • Implementing only one interface but adding all methods
  • Trying to implement interfaces in interface declaration
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