Typescript interne modules tussen verschillende bestanden

stemmen
5

Stel dat de volgende klasse definitie met behulp van typoscript in Animal.ts:

module Animals
{
    export class Animal { }    
}

Als ik wil een Hond klasse te maken in een apart bestand, bijvoorbeeld in Dog.ts met deze code:

module Animals
{
    export class Dog extends Animal { }
}

de naam Animal bestaat niet in de huidige omvang, is de fout die ik in de klas definitie Dog.

Het toevoegen van de volgende regel toe aan Dog.ts

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

fixeert de compilatie fout, maar waarom is dit noodzakelijk, indien beide klassen worden gedefinieerd binnen dezelfde module?

Met andere woorden, ik wil module verklaringen die aan overspanning over bestanden met elke klasse of interface-definitie in hun eigen bestand. Is dit zelfs best practice?

De vraag is gesteld op 08/10/2012 om 19:06
bron van user
In andere talen...                            


2 antwoorden

stemmen
5

Allereerst, als je beide bestanden te compileren in een keer met behulp van

tsc Animal.ts Dog.ts

alles komt goed. Bij het samenstellen van Typescript bestanden, de compiler moet zich bewust zijn van welke bestanden daadwerkelijk vormt zulks te worden gemaakt van het programma . Dit kan worden gedaan met behulp van bronverwijzingen met ///of door het verstrekken van alle bestanden naar de compiler. Dit is enigszins anders dan andere talen zoals javadie compileren een tussenrepresentatie en een begrip CLASSPATHwaar te zoeken naar andere bestanden die deel uitmaken van het programma.

antwoordde op 08/10/2012 om 19:31
bron van user

stemmen
2

De /// verwijzing is nodig omdat de compiler nodig heeft om te weten waar Animal een of andere manier wordt gedefinieerd. Het kan niet weten wat bronbestand het op zonder dat je het te vertellen waar te kijken.

Ik ben niet zeker dat dit een best practice per se (zou moeten meer weten over uw aanvraag weten), maar ik nauwelijks denk dat het een anti-patroon, dus ik denk dat je kunt vrij om dat te doen voelen. Modules met de schrijfmachine zijn bewust open-end toe te staan ​​voor dit soort patroon.

antwoordde op 08/10/2012 om 19:11
bron van user

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