Heim > Web-Frontend > js-Tutorial > Hauptteil

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?

Mary-Kate Olsen
Freigeben: 2024-10-31 16:28:02
Original
127 Leute haben es durchsucht

How can we ensure that an object only contains properties defined in its interface when passing it through angular.toJson?

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>
Nach dem Login kopieren

Und deren Implementierung mit einem zusätzlichen Eigenschaft newTest:

<code class="typescript">class MyTest implements MyInterface {
  test: string;
  newTest: string;
}</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren
<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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!