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.

Top comments (0)