ES6 ist in Knoten 4 vollständig verfügbar. Ich habe mich gefragt, ob es ein Schnittstellenkonzept zum Definieren von Methodenverträgen wie in enthält MyClass implements MyInterface
.
Ich kann mit meinem Googeln nicht viel finden, aber vielleicht gibt es einen netten Trick oder eine Problemumgehung.
javascript
node.js
interface
ecmascript-6
Jérôme Verstrynge
quelle
quelle
Antworten:
Schnittstellen sind nicht Teil des ES6, Klassen jedoch.
Wenn Sie sie wirklich brauchen, sollten Sie sich TypeScript ansehen, das sie unterstützt .
quelle
In Kommentaren, die debiasej geschrieben hat, erklärt der unten erwähnte Artikel mehr über Entwurfsmuster (basierend auf Schnittstellen, Klassen):
http://loredanacirstea.github.io/es6-design-patterns/
Design Patterns Book in Javascript kann auch für Sie nützlich sein:
http://addyosmani.com/resources/essentialjsdesignpatterns/book/
Entwurfsmuster = Klassen + Schnittstelle oder Mehrfachvererbung
Ein Beispiel für das Factory-Muster in ES6 JS (zum Ausführen: node example.js):
quelle
Angesichts der Tatsache, dass ECMA eine „klassenfreie“ Sprache ist, ist die Implementierung klassischer Kompositionen in meinen Augen nicht sehr sinnvoll. Die Gefahr besteht darin, dass Sie auf diese Weise effektiv versuchen, die Sprache neu zu konstruieren (und wenn Sie sich stark dafür fühlen, gibt es ausgezeichnete ganzheitliche Lösungen wie das oben erwähnte TypeScript, die die Neuerfindung des Rads mildern).
Das heißt aber nicht, dass Komposition in Plain Old JS jedoch nicht in Frage kommt. Ich habe das vor einiger Zeit ausführlich recherchiert. Der stärkste Kandidat, den ich für den Umgang mit Kompositionen innerhalb des Objektprototyp-Paradigmas gesehen habe, ist Stempel , den ich jetzt in einer Vielzahl von Projekten verwende. Und vor allem hält es sich an eine gut artikulierte Spezifikation.
Weitere Informationen zu Briefmarken finden Sie hier
quelle
class
ist nur ein Synonym fürstruct
. Eine wirklich klassische Sprache wie Smalltalk? Es ermöglicht die dynamische Erweiterung von Prototypen und sogar InstanzenDies ist meine Lösung für das Problem. Sie können mehrere Schnittstellen 'implementieren', indem Sie eine Schnittstelle mit einer anderen überschreiben.
BEARBEITEN:
Ich habe den Code verbessert, sodass Sie jetzt einfach implement (baseClass, interface1, interface2, ...) im Extend verwenden können.
quelle
Es gibt Pakete, die Schnittstellen simulieren können.
Sie können es6-Schnittstelle verwenden
quelle