interface Collection { length: number; add(x: T, y: U): void; remove(x: T, y: U): boolean; } interface Combinators { map(c: Collection, f: (x: T, y: U) => V): Collection; map(c: Collection, f: (x: T, y: U) => any): Collection; } var c2: Collection; var _: Combinators; var r1a = _.map(c2, (x) => { return x.toFixed() }); var rf1 = (x: number) => { return x.toFixed() }; var r1b = _.map(c2, rf1);