I think an example is how typescript can know, based on the first argument to a listener, what the Event type coming in will be
elem.addEventListner('mousedown', (foo) => {...});
elem.addEventListner('keydown', (bar) => {...});
typescript knows foo is a MouseEvent and bar is a KeyboardEventOf course you could argue that `addEventListener` is just bad design but I feel like there are legit uses to being able to associate an enum or string with type and I haven't seen that feature in other languages I've used.