Typescript module interne din mai multe fișiere

voturi
5

Să presupunem următoarea definiție clasă folosind dactilografiat în Animal.ts:

module Animals
{
    export class Animal { }    
}

Dacă vreau să creați o clasă de câine într-un fișier separat, spune în Dog.ts folosind acest cod:

module Animals
{
    export class Dog extends Animal { }
}

numele „animal“ nu există în domeniul de aplicare curent, este eroarea I a lua în Dog definiție de clasă.

Adăugarea următoarea linie la Dog.ts

/// <reference path=Animal.ts/>

stabilește eroarea de compilare, dar de ce este necesar acest lucru, în cazul în care ambele clase sunt definite în cadrul aceluiași modul?

Cu alte cuvinte, vreau declarații de module pentru a extinde pe mai multe fișiere cu fiecare clasă sau definiție interfață în propriul lor dosar. Este chiar și cele mai bune practici?

Întrebat 08/10/2012 la 19:06
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
5

În primul rând, dacă compilați ambele fișiere simultan, utilizând

tsc Animal.ts Dog.ts

totul va fi bine. Când compilarea fișierelor typescript, compilatorul trebuie să fie conștienți de ceea ce fișiere de fapt , constitue programul . Acest lucru se poate realiza folosind referințe sursă cu ///sau prin furnizarea de toate fișierele compilator. Acest lucru este oarecum diferită de alte limbi , cum ar fi java, care compilează la o reprezentare intermediară și au o noțiune de o în CLASSPATHcazul în care pentru a căuta alte fișiere care fac parte din program.

Publicat 08/10/2012 la 19:31
sursa de către utilizator

voturi
2

/// de referință este necesară, deoarece compilatorul trebuie să știe unde Animal este definit într-un fel. Nu se poate ști ce fișier sursă este în fără ai spune unde să se uite.

Nu sunt sigur că aceasta este cea mai bună practică în sine (ar trebui să știe mai multe despre cererea dumneavoastră), dar eu nu prea cred că este un anti-model așa cred că vă puteți simți liber să faci asta. Modulele dactilografiat sunt în mod deliberat, pentru a permite nedeterminată pentru acest tip de model.

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

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