When to use interface or class in TypeScript?

When should I use an interface or a class in TypeScript?
Can you explain the differences between typescript interface vs class and when to use each?

Hey @MiroslavRalevic ,

When defining the structure of an object in TypeScript, it’s best to use an interface if you only need to specify the shape (i.e., the properties and methods) without worrying about instantiating it or adding implementation. Interfaces are perfect for type checking and are especially useful when working with polymorphism or inheritance.

For example:

interface Person {
    name: string;
    age: number;
}

const user: Person = { name: "John", age: 30 };

Unlike classes, interfaces don’t require an implementation, making them lighter and more flexible when defining object structures. They focus solely on type definitions, making them ideal for ensuring consistency across objects.

Best regards,
Ian

Hello All,

In TypeScript, use a class when you need to create objects with both properties and methods. A class acts as a blueprint for defining the structure and behavior of objects, and can include constructors and inheritance.

Example:

class Person {
    constructor(public name: string, public age: number) {}

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

const user = new Person("John", 30);
user.greet(); // Output: Hello, my name is John

Classes allow instantiation and behavior definition, unlike interfaces, which only define types.

Best regards,
Babita

Combine Interface with Class for Better Structure and Type Safety: You can combine interfaces and classes to ensure type safety while still having the power of instantiation. In this case, an interface defines the structure, while a class provides the implementation. For example: interface Person { name: string; age: number; greet(): void; }

class Employee implements Person { name: string; age: number; jobTitle: string;

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

greet() {
    console.log(`Hello, I am ${this.name} and I work as a ${this.jobTitle}`);
}

}

const employee = new Employee(“Alice”, 28, “Engineer”); employee.greet(); // Output: Hello, I am Alice and I work as an Engineer

typescript interface vs class: This combination allows you to define type structure and ensure implementation, benefiting from both types of constructs.