Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When use a interface or class in Typescript [duplicate]

People also ask

Should I use interface or class in TypeScript?

When should we use classes and interfaces? If you want to create and pass a type-checked class object, you should use TypeScript classes. If you need to work without creating an object, an interface is best for you.

Why do we use interface in TypeScript?

Interfaces in TypeScript have two usage scenarios: you can create a contract that classes must follow, such as the members that those classes must implement, and you can also represent types in your application, just like the normal type declaration.

Can a class implements multiple interface TypeScript?

Another benefit of interfaces is that we can implement more than one. Please note that interfaces aren't used for multiple inheritance, it's just a benefit we get when using an interface. To implement multiple interfaces, we separate them with a comma.

What is the difference between interface and abstract class in TypeScript?

A bigger difference in TypeScript is that (abstract) classes are available at runtime, while interfaces are compile time only. This means that you cannot, for example, use instanceof with interfaces.


At it's most basic, a class is essentially an object factory (ie. a blueprint of what an object is supposed to look like and then implemented), whereas an interface is a structure used solely for type-checking.

While a class may have initialized properties and methods to help create objects, an interface essentially defines the properties and type an object can have.

In the scenario you described, one would use the interface to set the type for UserLogin.


If you just need to declare a custom type then use interfaces. IMO, there is a very pragmatic reason - they don't get transpiled into JavaScript so the generated code is shorter.

Interfaces won't work if you need to instantiate objects with constructors or use a framework that instantiates and inject them. Then use classes or abstract classes.


Actually both will do the job. I would suggest you to use interfaces though if you just do type-checking as it is specifically designed for that purpose.

Classes and interfaces are powerful structures that facilitate not just object-oriented programming but also type-checking in TypeScript. A class is a blueprint from which we can create objects that share the same configuration - properties and methods. An interface is a group of related properties and methods that describe an object, but neither provides implementation nor initialisation for them.

From: https://toddmotto.com/classes-vs-interfaces-in-typescript


send it to the back-end

Sending classes over the wire requires extra effort - if you use JSON content type, your class will come as plain object to your back-end code. See numerous answers for this question telling how to convert JSON back to a class object so it's possible to call its methods.

But since the class in your question has no methods, it does not matter, unless the back-end code will perform runtime checks using instanceof.

To avoid these problems, use interface which has only data members for representing objects for communicating with back-end.