function map(xs: T[], f: (x: T) => U) { var ys: U[] = []; xs.forEach(x => ys.push(f(x))); return ys; } var r0 = map([1, ""], (x) => x.toString()); var r5 = map([1, ""], (x) => x.toString()); var r6 = map([1, ""], (x) => x.toString()); var r7 = map([1, ""], (x) => x.toString()); // error var r7b = map([1, ""], (x) => x.toString()); // error var r8 = map([1, ""], (x) => x.toString());