//// [inferenceFromParameterlessLambda.ts] function foo(o: Take, i: Make) { } interface Make { (): T; } interface Take { (n: T): void; } // Infer string from second argument because it isn't context sensitive foo(n => n.length, () => 'hi'); //// [inferenceFromParameterlessLambda.js] function foo(o, i) { } // Infer string from second argument because it isn't context sensitive foo(function (n) { return n.length; }, function () { return 'hi'; });