I have an object with some properties such as;
integrationConfig = { iconEmoji: ':myIconEmoji:', team: 'myTeam', text: 'myText', channel: 'myChannel', botName: 'myBot' }
I am passing this object to a function below as shown (attachments
is not important).
return await this.pushToSlack(...integrationConfig, attachments);
Importantly, this function is part of an NPM Package, so I don’t want to change the function declaration.
The function is declared like this:
exports.pushToSlack = function (channel, text, botName, iconEmoji, team, attachments, cb = function () {}) { // […] }
I put some breakpoint to the pushToSlack
function but the debugger didn’t jump into that line. I guess the function is not called somehow. I also receive this error:
Debug: internal, implementation, error TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator)) at Function.all (<anonymous>)
Have you got any idea?
Advertisement
Answer
Spread syntax is not usable for that
use Destructuring assignment
integrationConfig = { iconEmoji : ':myIconEmoji:' , team : 'myTeam' , text : 'myText' , channel : 'myChannel' , botName : 'myBot' }
the call :
return await this.pushToSlack( integrationConfig, attachments);
the function :
exports.pushToSlack = function ({channel, text, botName, iconEmoji, team}, attachments, ... //..Destructuring assignment....^.......................................^ // Arguments can be in any order you want // and no obligation to have all of them