For example, in window.addEventListener("click", callback) callback is a procedure that receives MouseEvent, while in window.addEventListener("copy", callback) callback is a procedure that receives ClipboardEvent. So we can say that type of second argument depends on the string passed as first. TypeScripts type system is able to make this statically typed and type checked properly.
Any examples of "wacky" functions where similar dependencies exist but are not necessary?