'How to use spread operator in javascript?
Hi i have code like below,
async createItem(params: ItemParams, id?: any): Promise<Item> {
const { ...fields } = params; //remove spread operator here
try {
const { data: any} = await this.post(`/${ITEM}/`, keysToSnakeCase(fields)); //how can i rewrite this
//some logic
}
}
now i want to remove spread operator in line
const { ...fields } = params;
how can i do this. I have tried,
const {fields } = params; // says fields doesnt exist on params error.
could someone help me with this. thanks
Solution 1:[1]
The ...fields part could be redundant in this scenario. The spread operator takes all the remaining key value pairs in your object and assigns them to a new object.
In your case fields is by value identical to params.
(Note: fields and params are equal by value, not by reference.)
You can simply rewrite your code like this:
async createItem(params: ItemParams, id?: any): Promise<Item> {
try {
const { data: any} = await this.post(`/${ITEM}/`, keysToSnakeCase(params));
//some logic
}
}
if the keysToSnakeCase function modifies its properties you'll notice that your original params object changes.
If this is the case, you can add the spread operator back over there to create a shallow clone of the params object so it is not updated.
async createItem(params: ItemParams, id?: any): Promise<Item> {
try {
const { data: any} = await this.post(`/${ITEM}/`, keysToSnakeCase(...params));
//some logic
}
}
For more info on the spread syntax, please refer to: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
