Classes are the building blocks of object-oriented programming. While an interface declares just the shape and the behavior of objects, a class not only specifies a shape and a behavior but also gives the code to implement that behavior, and a way to create objects with that behavior and shape. In a few words, we may say that interfaces are just specifications while classes are specifications plus implementation.
ES6 specifications extend ES5 specifications by adding classes to JavaScript. However, when the JavaScript target is ES5, TypeScript generates equivalent code based on the JavaScript constructor functions. The TypeScript class syntax mimics the one of ES6 classes, the only difference being the addition of types to all class parts. This is by design since TypeScript is the JavaScript of the future plus types.
Classes define types, whose instances are JavaScript...