Maschinenschrift erstrecken Objekt in Modul

stimmen
3

Was ich tun möchte , ist wirklich ähnlich wie dies und dies außer ich versuche , herauszufinden, wie ein ArrayExtension innerhalb eines Moduls zu setzen.

Ich versuche, etwas ähnlich wie C # Erweiterungsmethoden arbeiten zu bekommen, so kann ich das Modul einfach importieren, und ich werde meine zusätzliche Methoden. Die Links, die ich zur Verfügung gestellt zeigen, wie ein bestehendes Objekt zu erweitern, aber ich habe nicht herausfinden konnte, wie das in ein Modul verkapseln.

Veröffentlicht am 11/10/2012 um 01:52
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Wenn Sie Nicht-Browser - Umgebungen wie node.js peilen wird dies möglich sein , weil Sie in der Lage sein werden , Verweis auf das Modul der globalen Mitglieder, wie zum Beispiel passieren Array, zu anderen Modulen. Die anderen Module können dann die übergebene Objekt und / oder dessen Prototyp mit zusätzlichen Funktionen erweitern , die durch den anrufenden Modul nur zugänglich sein wird. Andere Module würden das gleiche tun , um diese Erweiterungen zu erhalten; Daher werden Konflikte minimiert , da die Einfuhren explizit sind.

In Browser - Umgebungen Dies ist jedoch nicht der Fall , da es nur eine ist windowObjekt und alle Änderungen an seine Mitglieder sind überall verfügbar. Sobald alle Ihre Module erweitert Arraydiese Erweiterungen würde zu allen anderen Modulen zur Verfügung - über die Möglichkeit , Konflikte und macht den Code schwerer zu Grund zu erhöhen.

Mit dieser sagte, gibt es Muster in JS, und daher Typoskript, die erreichen sollten , was Sie wollen. Ein solches Muster ist das "mixin Muster , das Sie auf zusätzliche Funktionen für ein Objekt hinzufügen können Instanz Basis. Sie könnten wiederverwendbaren Code in mixin Module trennen , die dann auf ein Objekt angewendet werden kann , wenn nötig, oder auch automatisch in Konstrukteuren. Werfen Sie einen Blick auf diese für einen angemessenen Überblick und Implementierungsbeispiele: http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

Beantwortet am 01/11/2012 um 05:48
quelle vom benutzer

stimmen
0

Wenn Sie versuchen , die eingebaute Array - Typ erweitern können Sie tun das nicht innerhalb eines Moduls. Du bist Erweiterung in einer ArrayEx.ts Datei leben müssen und außerhalb von Modulen auftreten. Der Grund dafür ist , dass , wenn Sie es innerhalb eines Moduls haben würden Sie die sein erstreckt Foo.ArrayArt , die nicht das gleiche wie Array.

Aber Sie sagen , Sie nur das Modul in der Lage Import sein wollen Ihre persönlichen Methoden nach oben zeigen haben , und alles , was Sie wirklich tun müssen, ist ein hinzufügen /// <reference path='ArrayEx.ts' />auf jede Datei , die Sie die Erweiterungsmethoden zur Verfügung stehen sollen. Dies ist im Wesentlichen das Gleiche.

Beantwortet am 11/10/2012 um 07:07
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more