Ich arbeite mit Typescript in einem AngularJS 1.X Projekt. Ich benutze verschiedene Javascript-Bibliotheken für verschiedene Zwecke. Zum Testen meiner Quelle möchte ich einige Abhängigkeiten mit den Typings (= Interfaces) stubben. Ich möchte den ANY-Typ nicht verwenden und auch keine leere Methode für jede Schnittstellenmethode schreiben.Wie stemple ich eine Typoskript-Schnittstelle/Typ-Definition?
Im Suche nach einem Weg, so etwas zu tun:
let dependency = stub(IDependency);
stub(dependency.b(),() => {console.log("Hello World")});
dependency.a(); // --> Compile, do nothing, no exception
dependency.b(); // --> Compile, print "Hello World", no exception
Der Schmerz, den ich jetzt habe, ist, dass ich entweder verwenden any
und alle Methoden implementieren, die in meinem Testfall aufgerufen oder ich implementieren die Schnittstelle und implementieren Sie die vollständige Schnittstelle. Das ist zu viel unnützer Code :(.
Wie kann ich ein Objekt erzeugen, die eine leere Implementierung für jede Methode hat und eingegeben wird? Ich benutze Sinon für Zwecke spöttisch, aber im offenen anderen Bibliotheken zu verwenden.
PS: Ich weiß, dass Typescript die Schnittstellen löscht ... aber ich möchte das immer noch lösen :).
Sie alle benötigen eine Klasse, um einen Schein zu erstellen, eine Schnittstelle ist nicht genug. Ich denke, die Art der Löschung macht es unmöglich, ohne Typescript selbst zu hacken -> http://stackoverflow.com/questions/13142635/how-can-i-create-an-object-based-on-an-interface-file- definition-in-typescript – user1879408
Was ist mit dem Erstellen eines leeren Objekts, das Ihre Schnittstelle implementiert? und übergib es als Gegenstand an deinen Spott? – PolishDeveloper
Das schafft die Methoden nicht -> Type löschen;) – user1879408