Currying in JavaScript is really nice if you can remember the arities of each curried function you're using. If you forget to call up to the last argument, you'll be passing a curried function instead of the expected value, and it can throw an error really far away from the bug. And instead of normal data to inspect at the error site to point you to the bad call, you'll only have a generic function name to look at. I've spent more hours than I'd like to admit debugging these situations.
A type system would detect these cases, but TypeScript and Flow don't have great support for curried functions. Typing them is very verbose.
A type system would detect these cases, but TypeScript and Flow don't have great support for curried functions. Typing them is very verbose.