This example shows method overriding with types in TypeScript. We start by defining a base class Animal with a method speak() that returns a string. Then we define a derived class Dog that overrides speak() to return the specific string literal "bark". We create a variable pet typed as Animal but assign it a Dog instance. When we call pet.speak(), the Dog's overridden method runs, returning "bark". This works because method calls use the actual object's method, not the variable's type. TypeScript allows the derived method to have a more specific return type, ensuring type safety. The execution table traces each step, showing how the variable pet changes and how the method call resolves. Key moments clarify why the overridden method runs and how return types work. The visual quiz tests understanding of these points. This teaches how method overriding with types enables flexible and safe polymorphism in TypeScript.