Ich versuche herauszufinden, wie eine einzelne Instanz einer Schnittstelle in Typescript erhalten. Ich habe den folgenden Code, das funktioniert:Wie erhalte ich eine einzelne Instanz einer Schnittstelle in Typescript
export interface IOpenStatus {
filePath: string;
openSuccess: boolean;
error: string;
fileData: string;
}
openStatus: IOpenStatus[];
Allerdings, wenn ich nur eine einzige Instanz der Schnittstelle soll definiert werden, diese nicht:
openStatus: IOpenStatus;
Dies scheitert auch:
Es scheint, dass das Array "[]" irgendwie einen Mechanismus zur Instanzerstellung ersetzt (wenn auch für mehrere Instanzen). In meiner Situation möchte ich nie mehr als eine Instanz der Schnittstelle instanziieren.
Wie instanziiere ich eine einzelne Instanz der Schnittstelle? Ich muss eine Schnittstelle verwenden, weil ich diese Daten vom Server mit derselben Schnittstelle zurückgeben werde.
UPDATE Ich kann einen Teil des Problems sehen, ich habe den Kontext nicht angegeben. Ich mache das in einer Angular2-Anwendung. In meiner Situation, war ich mit
openStatus: IOpenStatus[];
als Teil einer Klasse Eigenschaftsdefinition (eine Komponente um genau zu sein). Es scheint, dass die Array-Notation einfach erlaubt, dass Javascript die Instanziierung eines Arrays vom Typ der Schnittstelle ohne irgendeine weitere Definition vorwegnimmt (es kann unmittelbar danach als ein Array von solchen verwendet werden).
Was ich zu tun habe, am Ende zu verwenden:
userOpenStatus = new OpenStatus();
ist die Schnittstelle in einer Klasse zu implementieren, wie:
export interface IOpenStatus {
filePath: string;
openSuccess: boolean;
error: string;
fileData: string;
}
export class OpenStatus implements IOpenStatus {
filePath: string;
openSuccess: boolean;
error: string;
fileData: string;
}
Sie können eine Schnittstelle nicht instanziieren. Sie existieren, um einen Vertrag ohne Implementierung zu haben, also ist das Instanziieren gegen den gesamten Grund, warum sie existieren. – ssube
ok, also wenn das stimmt, wie kommt es, dass 'openStatus: IOpenStatus [];' ** ** implementiert ein Array der Schnittstelle? –
'IOpenStatus []' deklariert einfach 'openStatus', um eventuell ein Array von' IOpenStatus' zu enthalten, es implementiert oder instanziert nichts. – ssube