Ich habe eine Menge Tabellen in Lovefield und ihre jeweiligen Schnittstellen für welche Spalten sie haben.
Beispiel:
Get Keys einer Typescript-Schnittstelle als Array von Strings
export interface IMyTable {
id: number;
title: string;
createdAt: Date;
isDeleted: boolean;
}
Ich möchte die Eigenschaftsnamen dieser Schnittstelle in einem Array wie diese haben:
var IMyTable = ["id", "title", "createdAt", "isDeleted"];
ich kein Objekt/Array basiert auf der Schnittstelle machen kann IMyTable
direkt das sollte den Trick machen, weil ich die Schnittstellennamen der Tabellen dynamisch bekommen würde. Daher muss ich über diese Eigenschaften in der Schnittstelle iterieren und ein Array daraus herausholen.
Wie erreiche ich dieses Ergebnis?
Sie wie meinen Sie dies: 'var abc: IMyTable = {}; Object.keys (abc) .forEach ((key) => {console.log (key)}); ' –
Nein, weil dieses Objekt keine Schlüssel enthält. Eine Schnittstelle ist etwas, das TypeScript verwendet, aber im JavaScript verdampft, so dass keine Informationen mehr übrig sind, um "Reflektion" oder "Interspektion" anzuzeigen. Alles, was JavaScript kennt, ist, dass es ein leeres Objektliteral gibt. Deine einzige Hoffnung ist, auf (oder [fordere das] zu warten (https: // github.com/Microsoft/TypeScript/Probleme)) TypeScript enthält eine Möglichkeit, ein Array oder Objekt mit allen Schlüsseln in der Schnittstelle in den Quellcode zu generieren. Oder, wie Dan Def sagt, wenn Sie eine Klasse verwenden können, haben Sie die Schlüssel in Form von Eigenschaften in jeder Instanz definiert. – Jesper
Sie würden auch eine Fehlermeldung von TypeScript in dieser Zeile erhalten: 'var abc: IMyTable = { } 'weil das leere Objektliteral nicht der Form dieser Schnittstelle entspricht. – Jesper