Type aliases and interfaces are very similar, and in many cases you
can choose between them freely. Almost all features of an interface
are available in type, the key distinction is that a type cannot be
re-opened to add new properties vs an interface which is always
extendable.
The basic difference is that a class has both a definition and an implementation whereas an interface only has a definition. Interfaces are actually implemented via a class. (Due to this an interface supports the concept of multiple inheritances.)
A class describes the attributes and behaviors of an object .
An interface contains behaviors that a class implements.