When we compile a TypeScript program, all classes and objects become JavaScript objects. However, sometimes we may encounter an unexpected behavior at runtime, even if the compilation was completed without errors. To be able to identify and understand the cause of this behavior, we need a good understanding of the JavaScript runtime. One of the main concepts that we need to understand is how inheritance works at runtime.
The runtime inheritance system uses a prototypal inheritance model. In a prototypal inheritance model, objects inherit from objects, and there are no classes available. However, we can use prototypes to simulate classes. Let's see how it works.
At runtime, every JavaScript object has an internal property called prototype. The value of the prototype attribute is an object, which contains some attributes (data) and methods (behavior).
In TypeScript...