Heim > Artikel > Web-Frontend > Wie können wir sicherstellen, dass ein Objekt nur Eigenschaften enthält, die in seiner Schnittstelle definiert sind, wenn es über angle.toJson übergeben wird?
Sicherstellung der Objektkonformität mit der Schnittstelle: Entfernen überflüssiger Eigenschaften
TypeScript-Schnittstellen definieren Vertragsspezifikationen für Klassen oder Objekte. Bei der Implementierung können jedoch zusätzliche Eigenschaften hinzugefügt werden, die über die von der Schnittstelle definierten hinausgehen, was zu Inkonsistenzen führt. Die Lösung dieses Problems ist von entscheidender Bedeutung, insbesondere wenn reduzierte Objekte für eine RESTful-Kommunikation über angle.toJson übergeben werden.
Betrachten Sie eine Schnittstelle MyInterface mit einem einzelnen Eigenschaftstest:
<code class="typescript">interface MyInterface { test: string; }</code>
Und deren Implementierung mit einem zusätzlichen Eigenschaft newTest:
<code class="typescript">class MyTest implements MyInterface { test: string; newTest: string; }</code>
Frage:
Wie können wir sicherstellen, dass das reduzierte Objekt, wenn es von einem Objekt wie MyTest zugewiesen wird, nur die in MyInterface deklarierten Eigenschaften enthält , ausgenommen newTest?
Antwort:
Leider ist es nicht möglich, irrelevante Eigenschaften zur Laufzeit direkt von einem Objekt zu entfernen, basierend ausschließlich auf einer Schnittstellendefinition. Schnittstellen in TypeScript dienen als Entwurfszeitkonstrukt und ihre Eigenschaften sind bei der Ausführung nicht ohne weiteres verfügbar.
Eine mögliche vorgeschlagene Lösung besteht darin, die „Schnittstelle“ als Klasse zu definieren und so eine Laufzeitimplementierung bereitzustellen. Dadurch können wir Lodash nutzen, um nur die gewünschten Eigenschaften aus dem Eingabeobjekt auszuwählen:
<code class="typescript">class MyInterface { test: string = undefined; }</code>
<code class="typescript">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</code>
Durch die Verwendung dieser Methode können wir die angegebenen Eigenschaften effektiv extrahieren und so ein Objekt erstellen, das an der Schnittstelle haftet Vertrag und ist bereit für die Serialisierung über angle.toJson.
Das obige ist der detaillierte Inhalt vonWie können wir sicherstellen, dass ein Objekt nur Eigenschaften enthält, die in seiner Schnittstelle definiert sind, wenn es über angle.toJson übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!