DEV Community

Cover image for Understanding the Difference Between Type and Interface in TypeScript
Henry Dioniz
Henry Dioniz

Posted on

Understanding the Difference Between Type and Interface in TypeScript

As a JavaScript or TypeScript developer, you might have come across the terms type and interface when working with complex data structures or defining custom types. While both serve similar purposes, they have distinct characteristics that influence when to use them. In this blog post, we'll delve into the differences between types and interfaces in TypeScript, providing examples to aid your understanding.

Interfaces

Interfaces in TypeScript allow you to define the structure of an object. They provide a way to define contracts within your codebase, specifying the properties and methods an object must have. Interfaces are often used for object shapes and are particularly useful for ensuring consistency across different parts of your codebase.

Here's an example of defining an interface in TypeScript:

interface Person {
  name: string;
  age: number;
  greet: () => void;
}

const john: Person = {
  name: "John",
  age: 30,
  greet() {
    console.log(`Hello, my name is ${this.name}.`);
  }
};
Enter fullscreen mode Exit fullscreen mode

Above, we define an interface called Person with properties name and age, as well as a method greet. Then, we create an object john that adheres to this interface.

Types

Types in TypeScript, on the other hand, offer a more flexible approach to defining shapes of data. They allow you to create aliases for primitive types, union types, tuples, and more complex structures. Types are not limited to object shapes and can be used to represent a wide range of data.

Here's an example of defining a type alias in TypeScript:

type Point = {
  x: number;
  y: number;
};

const point: Point = {
  x: 10,
  y: 20
};
Enter fullscreen mode Exit fullscreen mode

Above, we create a type alias Point representing an object with x and y numeric properties. Then, we create an object point using this type.

When to Use Type or Interface

According to the TypeScript documentation, the choice between using a type or an interface depends on the specific scenario and personal preference. However, there are some general guidelines:

  • Use Interfaces:
    • When defining shapes of objects with specific properties and methods.
    • When you want to enforce a contract that objects must adhere to.
    • When working with object-oriented patterns like implementing classes.
  • Use Types:
    • When creating aliases for primitive types, union types, tuples, or any other complex data structure.
    • When you need to use computed properties or mapped types.
    • When you want to compose types together using intersection or union operators.

Conclusion

Understanding the difference between type and interface in TypeScript is crucial for writing clear and maintainable code. While interfaces are great for defining object shapes and enforcing contracts, types offer flexibility and versatility in defining various data structures. By choosing the right tool for the job, you can improve the readability and robustness of your TypeScript codebase.

Question: When would you prefer using an interface over a type in TypeScript?

Reference: TypeScript example

Top comments (0)