Carlo's response is in the right direction, but I would approach it using spread arguments and a named tuple:
type X_Y = [x: number, y: number];
function sum(...args: X_Y) { return args[0] + args[1] };
function difference(...args: X_Y) { return args[0] - args[1] };
sum(1, 2);
difference(1, 2);
If the output type is always consistent, you might want to consider defining one type for the entire process:
type Operation = (x: number, y: number) => number;
const add: Operation = (x, y) => x + y
const substract: Operation = (x, y) => x - y
add(1, 2)
subtract(1, 2)