Maskinskrevet manuskript strekker objekt i modulen

stemmer
3

Det jeg ønsker å gjøre er egentlig ligner på dette , og dette uten at jeg prøver å finne ut hvordan du kan sette en ArrayExtension inne i en modul.

Jeg prøver å få noe som ligner på den måten C # skjøte metodene fungerer, på den måten jeg kan bare importere modulen og jeg har mine ekstra metoder. Linkene jeg gitt viser hvordan å utvide et eksisterende objekt, men jeg har ikke vært i stand til å finne ut hvordan å kapsle det inn i en modul.

Publisert på 11/10/2012 klokken 00:52
kilden bruker
På andre språk...                            


2 svar

stemmer
1

Hvis du målretter ikke-nettleser miljøer som node.js vil dette være mulig, fordi du vil være i stand til å passere referanser til modulens globale medlemmer, for eksempel Array, til andre moduler. De andre modulene kan deretter forlenge vedtatt i objektet og / eller dets prototyp med ekstra funksjonalitet som vil være kun tilgjengelig med kallet modulen. Andre moduler måtte gjøre det samme for å få disse utvidelsene; derfor er konflikter minimert siden import er eksplisitt.

Men i leser miljøer dette ikke er tilfelle, siden det bare er ett windowobjekt og eventuelle endringer i dets medlemmer er tilgjengelig overalt. Så snart noen av modulene utvidet Arraydisse utvidelsene vil være tilgjengelig for alle andre moduler - øker muligheten for konflikter og gjør koden vanskeligere å grunn om.

Med det sagt, det er mønstre i JS, og derfor Loggfila, som skal gjøre hva du vil. Et slikt mønster er 'mixin' mønster som gjør at du kan legge på ekstra funksjonalitet på et objekt forekomst basis. Du kan skille gjenbrukbare koden i mixin moduler som deretter kan brukes til et objekt når det trengs, eller automatisk i konstruktører. Ta en titt på dette for en grei oversikt og implementering eksempler: http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

Svarte 01/11/2012 kl. 04:48
kilden bruker

stemmer
0

Hvis du prøver å forlenge den innebygde Array typen du ikke kan gjøre det i løpet av en modul. Du er utvidelsen vil trenger for å leve i en ArrayEx.ts fil og forekommer utenfor noen moduler. Grunnen til det er at hvis du gjorde det innen en modul du ville være å utvide den Foo.Arraytypen som ikke er det samme som Array.

Men du sa at du bare ønsker å være i stand til import modulen for å ha ekstra metoder dukker opp og alt du egentlig trenger å gjøre er å legge en /// <reference path='ArrayEx.ts' />til en fil du ønsker forlengelses metoder for å være tilgjengelig for. Dette er egentlig det samme.

Svarte 11/10/2012 kl. 06:07
kilden bruker

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