This visual execution traces generic type variance in TypeScript. We define Animal and Dog interfaces, where Dog extends Animal. A generic function feedAnimals accepts arrays of type T constrained to Animal or its subtypes. We create a Dog array and pass it to feedAnimals. The type checker confirms Dog[] is compatible with Animal[]. Inside the function, we safely access the name property. The execution table shows each step, variable states, and type checks. Key moments clarify why subtypes work and the importance of constraints. The quiz tests understanding of type inference, output timing, and constraint roles.