Interfaces help us define a clear shape for objects. Classes can use interfaces to promise they will have certain properties and methods.
Implementing interfaces in classes in 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.
Dog that promises to have a name and a makeSound method as defined in the Animal interface.interface Animal {
name: string;
makeSound(): void;
}
class Dog implements Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound() {
console.log('Woof!');
}
}Car implements Vehicle interface, so it must have speed and move method.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}`);
}
}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.
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();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.
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
implements keyword do in a TypeScript class?Solution
Step 1: Understand the role of interfaces
Interfaces define a contract of properties and methods that a class must have.Step 2: Role of
Theimplementskeywordimplementskeyword makes sure the class follows that contract exactly.Final Answer:
It ensures the class follows the structure defined by an interface. -> Option AQuick Check:
implementsenforces interface structure [OK]
- Thinking implements creates or imports interfaces
- Believing implements auto-generates code
- Confusing implements with extends
Car implement an interface Vehicle?Solution
Step 1: Identify correct keywords for class and interface
Classes use the keywordimplementsto follow interfaces.Step 2: Check syntax correctness
class Car implements Vehicle {}is the correct way to declare this.Final Answer:
class Car implements Vehicle {} -> Option BQuick Check:
Class uses implements for interfaces [OK]
- Using extends instead of implements for interfaces
- Trying to implement interface in interface declaration
- Using 'uses' keyword which doesn't exist
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());Solution
Step 1: Check class implements interface correctly
Dog class has propertynameand methodspeak()as required.Step 2: Understand method output
speak()returns a string with the dog's name and 'says woof'.Final Answer:
"Buddy says woof" -> Option CQuick Check:
Method returns correct string with name [OK]
- Assuming missing method error when method exists
- Confusing property values with method output
- Ignoring string template usage
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);
}
}Solution
Step 1: Check interface method signature
InterfaceShaperequiresarea()to return a number.Step 2: Compare with class method return type
Circle'sarea()returns a string becausetoFixed()returns string.Final Answer:
Method area() returns string instead of number. -> Option AQuick Check:
Return type must match interface [OK]
- Returning string when interface expects number
- Forgetting to declare properties
- Using extends instead of implements for interfaces
interface Printer {
print(): void;
}
interface Scanner {
scan(): void;
}How can you create a class
AllInOneMachine that implements both interfaces correctly?Solution
Step 1: Understand multiple interface implementation
TypeScript allows a class to implement multiple interfaces separated by commas.Step 2: Check class methods match all interfaces
Class must have bothprint()andscan()methods.Final Answer:
class AllInOneMachine implements Printer, Scanner { print() { console.log('Printing'); } scan() { console.log('Scanning'); } } -> Option DQuick Check:
Multiple interfaces implemented with comma [OK]
- Using extends instead of implements for interfaces
- Implementing only one interface but adding all methods
- Trying to implement interfaces in interface declaration
Ready to prove it?
Pass the test and this pattern moves unknown
