ES proposal: bound function foo() { } foo(); // invalid, cannot be called directly bar.addEventListener("some", foo); // can be passed as a normal function TS proposal: bound<String> function foo() { }