DEV Community

Cover image for Types v/s Interfaces in TypeScript - A Dilemma
Jit Mitra
Jit Mitra

Posted on

Types v/s Interfaces in TypeScript - A Dilemma

When venturing into TypeScript, many encounter the dilemma of whether to employ Types or Interfaces, as both appear to fulfill the same function: predefining data or object types for future use.

The TypeScript official documentation recommends prioritizing Interfaces over Types. This preference stems from Interfaces offering clearer error messages and the ability to extend them by re-declaring, a capability not shared by Type aliases. However, it's imperative to delve deeper into their respective use cases for a comprehensive understanding. The link to the referenced article can be located in the Further Reading section.

While I endorse this recommendation, it's essential to discern specific scenarios where each option shines. Generally, opting for Interfaces over Type aliases remains prudent due to the advantages outlined earlier. However, one exception exists: when aiming to create a type that should remain immutable, with no possibility of external additions.

For instance, suppose you wish to define a custom user type comprising only username, password, and email fields—no more, no less. In such a scenario, leveraging Type aliases ensures the intended purpose remains intact, safeguarding against inadvertent modifications by others.

Further Reading:

For more insights check out the official documentation on Types vs Interfaces. Click here.

Image of Datadog

Create and maintain end-to-end frontend tests

Learn best practices on creating frontend tests, testing on-premise apps, integrating tests into your CI/CD pipeline, and using Datadog’s testing tunnel.

Download The Guide

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more