In a program the objects traveling through the program statements are like the train cars and the program variable statements are like the rails. If the variables are locked down with a specific type they become separate grooves that only allow that particular kind of object to travel along those pathways. Some think that this is a good thing which they call "type safety" because it's a simple way of organizing the information flows, much like a relational database is a simple view of the data that can be pigeon holed into restricted and limited "types".
Imagine traveling a road network that had different width tracks or groves in the road for each brand of car, truck, motor cycle, bicycle and pedestrian. It would be completely unworkable. That's exactly what a program with typed variables is like, especially the larger they get.