Hallo, ich habe Code wie unten,
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
}
}
Jetzt möchte ich den Spread-Operator in der Zeile entfernen
const {...fields } = params;
Wie kann ich das machen. Ich habe versucht,
const {fields } = params; // says fields doesnt exist on params error.
könnte mir jemand dabei helfen. Danke
Lösung des Problems
Das ...fields
Teil könnte in diesem Szenario redundant sein. Der Spread-Operator nimmt alle verbleibenden Schlüssel-Wert-Paare in Ihrem Objekt und weist sie einem neuen Objekt zu.
In Ihrem Fall fields
ist der Wert identisch mit params
.
(Hinweis: fields
und params
sind dem Wert nach gleich, nicht der Referenz.)
Sie können Ihren Code einfach so umschreiben:
async createItem(params: ItemParams, id?: any): Promise<Item> {
try {
const { data: any} = await this.post(`/${ITEM}/`, keysToSnakeCase(params));
//some logic
}
}
Wenn die keysToSnakeCase
Funktion ihre Eigenschaften ändert, werden Sie feststellen, dass sich Ihr ursprüngliches params
Objekt ändert.
Wenn dies der Fall ist, können Sie den Ausbreitungsoperator dort drüben wieder hinzufügen, um einen flachen Klon des params
Objekts zu erstellen, damit es nicht aktualisiert wird.
async createItem(params: ItemParams, id?: any): Promise<Item> {
try {
const { data: any} = await this.post(`/${ITEM}/`, keysToSnakeCase(...params));
//some logic
}
}
Weitere Informationen zur Spread-Syntax finden Sie unter: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
Keine Kommentare:
Kommentar veröffentlichen