DEV Community

Carlo Miguel Dy
Carlo Miguel Dy

Posted on

How to share properties from an Interface to a new Interface with TypeScript

Introduction

I just saw somewhere in an FB Community group asking how they are able to share the properties from a User interface to a PublicUser interface.

I have answered the person who asked the question and I'd also like to share my answer in this post.

Solution

Given that you have a User interface with the following properties that describes the model/entity.

interface User {
  name: string;
  email: string;
  age?: number;
}
Enter fullscreen mode Exit fullscreen mode

And you also want these properties in a new interface, for example for a Customer interface we will extend the User interface

interface Customer extends User {
  phoneNumber: string;

  address?: {
    streetAddress: string;
  } | null;
}
Enter fullscreen mode Exit fullscreen mode

By doing that we will have the name, email, age fields inherited into our new interface which is the Customer interface.

So as an example I will attach a screenshot below.

image

To break it down for you, we created an object and gave it a type of Customer interface, so by triggering or to peek which properties are available in Visual Studio Code (with CTRL + Space) it shows that the properties from User interface are inherited over to the Customer interface.

image

Conclusion

With that in mind instead of having to copy all properties from the User interface and paste it into the Customer interface, we have just inherited it into the Customer interface from the User interface. So we are writing lesser code.

That's all I have. Hope this was useful!

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

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay