Letra de imprenta se extienden objeto en el módulo

votos
3

Lo que quiero hacer es muy similar a este y este , excepto que estoy tratando de encontrar la manera de poner ArrayExtension dentro de un módulo.

Estoy tratando de conseguir algo similar a la forma en C # métodos de extensión trabajan, de esa manera que sólo puede importar el módulo y voy a tener mis métodos adicionales. Los enlaces que proporcioné muestran cómo extender un objeto existente, pero no he sido capaz de averiguar cómo encapsular que en un módulo.

Publicado el 11/10/2012 a las 01:52
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
1

Si usted está apuntando entornos distintas de los navegadores como Node.js esto será posible, ya que será capaz de pasar las referencias a los miembros de su módulo globales, tales como Array, a otros módulos. Esos otros módulos pueden entonces extender el pasado en el objeto y / o su prototipo con una funcionalidad adicional que será accesible únicamente por el módulo de llamadas. Otros módulos tendrían que hacer lo mismo con el fin de obtener estas extensiones; Por lo tanto, los conflictos se reducen al mínimo ya que las importaciones son explícitas.

Sin embargo, en entornos navegador este no es el caso, ya que sólo hay un windowobjeto y cualquier cambio en sus miembros están disponibles en todas partes. Tan pronto como cualquiera de sus módulos extendieron Arrayesas extensiones estarían disponibles para todos los demás módulos - que aumenta la posibilidad de conflictos y hacer que el código más difícil de razonar acerca.

Dicho esto, hay patrones en JS, y por lo tanto Letra de imprenta, que deben lograr lo que desea. Uno de estos es el esquema 'Mixin, que le permite añadir la funcionalidad extra en un objeto instancia base. Se podría separar el código reutilizable en módulos mixin que luego podrían ser aplicadas a un objeto cuando sea necesario, o incluso de forma automática en los constructores. Echar un vistazo a esto para un decente ejemplos visión general e implementación: http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

Respondida el 01/11/2012 a las 05:48
fuente por usuario

votos
0

Si usted está tratando de extender el construido en el tipo de matriz que no puede hacer que dentro de un módulo. Eres extensión tendrá que vivir en un archivo ArrayEx.ts y se producen fuera de los módulos. La razón de ello es que si lo hizo dentro de un módulo que estaría extendiendo el Foo.Arraytipo que no es lo mismo que Array.

Pero dijo que lo que desea es ser capaz de importar el módulo de tener sus métodos adicionales se presentan y lo único que hay que hacer es añadir una /// <reference path='ArrayEx.ts' />a cualquier archivo que se desea que los métodos de extensión estén disponibles para. Esta es esencialmente la misma cosa.

Respondida el 11/10/2012 a las 07:07
fuente por usuario

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