Ich denke, Sie haben grundsätzlich fünf verschiedene Möglichkeiten , dies zu tun. Die Auswahl unter ihnen kann je nach dem Ziel, das Sie erreichen möchten, einfach sein.
In den meisten Fällen ist es am besten, eine Klasse zu verwenden und zu instanziieren , da Sie TypeScript verwenden, um die Typprüfung anzuwenden.
interface IModal {
content: string;
form: string;
//...
//Extra
foo: (bar: string): void;
}
class Modal implements IModal {
content: string;
form: string;
foo(param: string): void {
}
}
Selbst wenn andere Methoden einfachere Möglichkeiten zum Erstellen eines Objekts aus einer Schnittstelle bieten, sollten Sie in Betracht ziehen , Ihre Schnittstelle aufzuteilen, wenn Sie Ihr Objekt für verschiedene Zwecke verwenden und dies keine Übersegregation der Schnittstelle verursacht:
interface IBehaviour {
//Extra
foo(param: string): void;
}
interface IModal extends IBehaviour{
content: string;
form: string;
//...
}
Auf der anderen Seite können Sie beispielsweise beim Testen Ihres Codes in Einheiten (wenn Sie die Trennung von Bedenken nicht häufig anwenden) die Nachteile möglicherweise aus Gründen der Produktivität akzeptieren. Sie können andere Methoden anwenden, um Mocks zu erstellen, hauptsächlich für große * .d.ts-Schnittstellen von Drittanbietern. Und es könnte schwierig sein, immer vollständige anonyme Objekte für jede große Schnittstelle zu implementieren.
Auf diesem Pfad können Sie zunächst ein leeres Objekt erstellen :
var modal = <IModal>{};
Zweitens, um den obligatorischen Teil Ihrer Benutzeroberfläche vollständig zu realisieren . Es kann nützlich sein, ob Sie JavaScript-Bibliotheken von Drittanbietern aufrufen, aber ich denke, Sie sollten stattdessen wie zuvor eine Klasse erstellen:
var modal: IModal = {
content: '',
form: '',
//...
foo: (param: string): void => {
}
};
Drittens können Sie nur einen Teil Ihrer Benutzeroberfläche erstellen und ein anonymes Objekt erstellen. Auf diese Weise sind Sie jedoch für die Erfüllung des Vertrags verantwortlich
var modal: IModal = <any>{
foo: (param: string): void => {
}
};
Zusammenfassend lässt sich sagen, dass TypeScript eine neue Abstraktionsebene bietet, wenn es sinnvoll und konsistent verwendet wird, auch wenn Schnittstellen optional sind, da sie nicht in JavaScript-Code transpiliert sind. Ich denke, nur weil Sie sie in den meisten Fällen aus Ihrem eigenen Code entfernen können, sollten Sie es nicht tun.