JavaScript-Objekt auf Schnittstelleneigenschaften reduzieren
In TypeScript fungiert eine Schnittstelle als Blaupause für Datenstrukturen. Zur Laufzeit sind die Schnittstellen jedoch leer, sodass es unmöglich ist, ein Objekt direkt so zu reduzieren, dass es nur die darin definierten Eigenschaften enthält.
Implementierung
Es gibt jedoch mehrere Problemumgehungen Methoden:
Verwenden einer Klasse
Definieren Sie die Schnittstelle stattdessen als Klasse:
class MyInterface { test: string = undefined; }
Verwenden Sie dann Lodash, um die erforderlichen Eigenschaften zu extrahieren:
import _ from "lodash"; const before = { test: "hello", newTest: "world" }; let reduced = new MyInterface(); _.assign(reduced, _.pick(before, _.keys(reduced))); console.log("reduced", reduced); // contains only "test" property
Assebly-Operator
Alternativ können Sie auch den Assembly-Operator verwenden:
let reduced = {...new MyInterface(), ...test};
Dadurch wird das leere „MyInterface“-Objekt zusammengeführt mit dem „test“-Objekt, wobei alle doppelten Eigenschaften überschrieben werden.
Warum diese Methode verwenden?
Dieser Ansatz ist nützlich, wenn Daten mithilfe von Angulars „toJson“ an REST-Dienste gesendet werden. Verfahren. Obwohl während der Kompilierung kein Zugriff auf die Eigenschaft „newTest“ möglich war, würde sie durch „toJson“ umgewandelt werden, was dazu führen würde, dass der REST-Dienst JSON aufgrund ungültiger Eigenschaften ablehnt. Durch die Reduzierung des Objekts auf die Schnittstelleneigenschaften werden nur die erwarteten Daten gesendet und so eine ordnungsgemäße Kommunikation mit dem Dienst sichergestellt.
Das obige ist der detaillierte Inhalt vonWie reduziere ich ein JavaScript-Objekt auf Schnittstelleneigenschaften in TypeScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!