Tipografico estendono oggetto nel modulo

voti
3

Quello che voglio fare è davvero simile a questo e questo , tranne che sto cercando di capire come mettere un ArrayExtension all'interno di un modulo.

Sto cercando di ottenere qualcosa di simile al modo in cui i metodi C # di estensione di lavoro, in questo modo posso solo importare il modulo e dovrò miei metodi aggiuntivi. I collegamenti sono forniti mostrano come estendere un oggetto esistente, ma non sono stati in grado di capire come incapsulare che in un modulo.

È pubblicato 11/10/2012 alle 01:52
fonte dall'utente
In altre lingue...                            


2 risposte

voti
1

Se ci si rivolge ambienti non del browser come node.js questo sarà possibile perché si sarà in grado di passare i riferimenti ai membri globali del modulo, ad esempio Array, ad altri moduli. Quegli altri moduli possono quindi estendere il passato in oggetto e / o il suo prototipo con funzionalità extra che sarà accessibile solo dal modulo di chiamata. Altri moduli avrebbero dovuto fare lo stesso al fine di ottenere queste estensioni; di conseguenza, i conflitti sono ridotti al minimo poiché le importazioni sono espliciti.

Tuttavia, in ambienti del browser non è questo il caso, in quanto v'è un solo windowoggetto e le eventuali modifiche ai suoi membri sono disponibili in tutto il mondo. Non appena uno qualsiasi dei vostri moduli esteso Arrayquelle estensioni sarebbe disponibile a tutti gli altri moduli - aumentando la possibilità di conflitti e rendere il codice più difficile da ragionare su.

Detto questo, ci sono modelli in JS, e quindi tipografico, che dovrebbe portare a termine ciò che si desidera. Un tale modello è il modello 'mixin', che consente di aggiungere la funzionalità in più su un oggetto un'istanza base. Si potrebbe separare il codice riutilizzabile in moduli mixin che potrebbero poi essere applicate ad un oggetto quando necessario, o anche automaticamente nei costruttori. Date un'occhiata a questo per una panoramica e implementazione decenti esempi: http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

Risposto il 01/11/2012 a 05:48
fonte dall'utente

voti
0

Se stai cercando di estendere il costruito nel tipo Array non si può fare che all'interno di un modulo. Sei estensione avrà bisogno di vivere in un file ArrayEx.ts e si verificano al di fuori di tutti i moduli. La ragione di ciò è che se l'avete fatto all'interno di un modulo si sarebbe l'estensione del Foo.Arraytipo che non è la stessa Array.

Ma hai detto che vuole solo essere in grado di importazione del modulo di avere i vostri metodi in più appaiono e tutto quello che ha realmente bisogno di fare è aggiungere un /// <reference path='ArrayEx.ts' />qualsiasi file che si desidera che i metodi di estensione per essere a disposizione. Questo è essenzialmente la stessa cosa.

Risposto il 11/10/2012 a 07:07
fonte dall'utente

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