Heim  >  Artikel  >  Web-Frontend  >  Wie reduziere ich ein JavaScript-Objekt auf Schnittstelleneigenschaften in TypeScript?

Wie reduziere ich ein JavaScript-Objekt auf Schnittstelleneigenschaften in TypeScript?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 01:55:27762Durchsuche

How to Reduce a JavaScript Object to Interface Properties in TypeScript?

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!

Stellungnahme:
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