fn(1)(2)(3)
fn(1, 2, 3) === fn(1, 2)(3) === fn(1)(2, 3)
Here's a gist of the type definitions I'm using: https://gist.github.com/noppa/c600cc43fd44e33768efe6c6eec4a9...
I think something similar might work in TS too.
Demo: https://goo.gl/w3aPsw