So, as I mentioned in the comments, it's not clear what you're trying to achieve here. First, that's not the spread operator. The ... notation when used in a function parameter list are for the rest parameters.
The rest parameter syntax allows us to represent an indefinite number of arguments as an array.
What this means for your example code is that when you pass in names and then use rest parameters your array of names is being placed inside a new array which means that your map would only iterate over the first element (an array) to produce:
[
"James,Simon,Alex Surname"
]
...which is wrong.
Really all you need to do is pass in the array, have the function accept an array as an argument, map over the names and return the new array.
const names = ["James", "Simon", "Alex"];
function fullName(arr) {
return arr.map(name => `${name} Surname`);
}
console.log(fullName(names));
mapover that?