Difference Between Class and Interface in Typescript

1. Introduction

This post provides a clear explanation of the differences between classes and interfaces in TypeScript, including their characteristics, example implementations, and guidelines on when to use each.

A class is a blueprint for creating objects and can encapsulate data and functions that operate on that data. Classes support inheritance, allowing one class to inherit properties and methods from another. An interface, on the other hand, is a way to define the structure of an object. It can’t be instantiated on its own and is used to define the shape that objects should have.

2. Key Points

1. Nature: Classes are concrete implementations, and interfaces are abstract definitions.

2. Instantiation: Classes can be instantiated, but interfaces cannot.

3. Methods: Classes can have implemented methods, interfaces only define method signatures.

4. Extension vs Implementation: Classes can extend other classes, and interfaces are implemented by classes.

3. Differences

Characteristic Class Interface
Nature Concrete implementation Abstract definition
Instantiation Can be instantiated Cannot be instantiated
Methods Can have implemented methods Only method signatures
Extension vs Implementation Can extend other classes Implemented by classes

4. Example

// Example of a Class
class Person {
    name: string;
    constructor(name: string) {
        this.name = name;
    }

    greet() {
        return "Hello, " + this.name;
    }
}

// Example of an Interface
interface Greetable {
    name: string;
    greet(): string;
}

// Implementing an interface in a class
class Player implements Greetable {
    name: string;
    constructor(name: string) {
        this.name = name;
    }

    greet() {
        return "Hi, I am " + this.name;
    }
}

Output:

No direct output as these are structural code examples.

Explanation:

1. The Person class is a concrete implementation with properties and methods.

2. The Greetable interface defines the structure that any implementing class should follow.

3. The Player class implements the Greetable interface, providing concrete implementations for the properties and methods defined in the interface.

5. When to use?

- Use a class when you need to create objects with specific properties and methods, and when you might need inheritance.

- Use an interface to define the structure of an object, ensuring that implementing classes follow a specific contract, particularly useful in large codebases and team environments.

Comments