Typescript se extind obiect în modulul

voturi
3

Ceea ce vreau să fac este foarte similar cu acest lucru si acest lucru , cu excepția am încercat să dau seama cum de a pune un ArrayExtension în interiorul unui modul.

Sunt încercarea de a obține ceva similar cu modul în care metodele de C # extensie locul de muncă, în acest fel pot importa doar modulul și voi avea metodele mele suplimentare. Link-urile I furnizate arată cum să se extindă un obiect existent, dar nu am fost în măsură să dau seama cum să îngloba că într-un modul.

Întrebat 11/10/2012 la 01:52
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
1

Dacă sunteți direcționarea în funcție de mediile non-browser precum node.js acest lucru va fi posibil , deoarece va fi capabil să treacă referințele la membrii globale ale modulului dvs., cum ar fi Array, în alte module. Aceste alte module pot apoi extinde în obiect și a trecut / sau prototipul acestuia cu funcționalitate suplimentară , care va fi accesibil numai de către modulul de asteptare. Alte module ar trebui să facă același lucru , în scopul de a obține aceste extensii; Prin urmare, conflictele sunt reduse la minimum , deoarece importurile sunt explicite.

Cu toate acestea, în mediile de browser nu este cazul , deoarece nu există decât un singur windowobiect , precum și orice modificări ale membrilor săi sunt disponibile peste tot. De îndată ce oricare dintre modulele extinse Arrayextensiile respective vor fi disponibile pentru toate celelalte module - creșterea posibilității de conflicte și de a face codul mai greu de Raționamente.

Acestea fiind spuse, există modele în JS, și , prin urmare, typescript care ar trebui să îndeplinească ceea ce vrei. Un astfel de model este modelul „mixin“ , care vă permite să adăugați pe funcționalitate suplimentară pe un obiect instanță bază. Ai putea separa cod reutilizabil în module mixin care ar putea fi apoi aplicat unui obiect atunci când este nevoie, sau chiar în mod automat în constructori. Aruncati o privire la acest lucru pentru o prezentare generală și decente exemple de punere în aplicare: http://javascriptweblog.wordpress.com/2011/05/31/a-fresh-look-at-javascript-mixins/

Publicat 01/11/2012 la 05:48
sursa de către utilizator

voturi
0

Dacă încercați să se extindă construit în tip Array nu se poate face acest lucru într - un modul. Esti extensie va trebui să trăiască într - un fișier ArrayEx.ts și apar în afara oricăror module. Motivul pentru care este că , dacă ai făcut -o într - un modul pe care doriți să extinde Foo.Arraytipul care nu este același lucru ca și Array.

Dar ai spus că vrei doar să fie în măsură de import modulul de a avea metode dvs. suplimentare apar și tot ce trebuie să faceți este să adăugați o /// <reference path='ArrayEx.ts' />la orice fișier pe care doriți metodele de extensie pentru a fi accesibile. Aceasta este , în esență , același lucru.

Publicat 11/10/2012 la 07:07
sursa de către utilizator

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