This example shows why inheritance needs types in TypeScript. We define a base class Animal with a string property name. Then we create a derived class Dog that extends Animal and adds a bark method. When we create a Dog instance named 'Buddy', we can call bark() which uses the inherited name property. TypeScript enforces that name must be a string, so assigning a number causes a compile-time error. This type checking ensures inheritance is safe and predictable, preventing bugs by catching mistakes early. The execution table traces each step from class definition to method call and type error. The variable tracker shows how dog.name is set and used. Key moments clarify why type errors happen and how inheritance shares properties. The quiz tests understanding of output, error steps, and inheritance effects. This visual trace helps beginners see how types protect inheritance in real code.