Loggfila interne moduler på tvers av flere filer

stemmer
5

Anta følgende klassedefinisjon hjelp Loggfila i Animal.ts:

module Animals
{
    export class Animal { }    
}

Hvis jeg ønsker å skape en hund klasse i en egen fil, sier i Dog.ts bruker denne koden:

module Animals
{
    export class Dog extends Animal { }
}

navnet Animal finnes ikke i dagens omfang, er feilen jeg får i klassen definisjonen Dog.

Legge til følgende linje i Dog.ts

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

fikser kompilering feil, men hvorfor er dette nødvendig, hvis blir definert begge klasser innenfor samme modul?

Med andre ord, jeg vil modul erklæringer å gå over filer med hver klasse eller grensesnitt definisjon i sin egen fil. Er dette også beste praksis?

Publisert på 08/10/2012 klokken 18:06
kilden bruker
På andre språk...                            


2 svar

stemmer
5

Først av alt, hvis du kompilere begge filene samtidig ved hjelp

tsc Animal.ts Dog.ts

alt vil bli bra. Når kompilering Loggfila filer, må kompilatoren for å bli gjort oppmerksom på hvilke filer faktisk constitue programmet . Dette kan gjøres ved hjelp av kildehenvisninger med ///eller ved å gi alle filene til kompilatoren. Dette er noe annerledes enn andre språk som java, som kompilere til en mellom representasjon og har en forestilling om en CLASSPATHhvor du skal søke etter andre filer som er en del av programmet.

Svarte 08/10/2012 kl. 18:31
kilden bruker

stemmer
2

Den /// referanse er nødvendig fordi kompilatoren må vite hvor dyr er definert en eller annen måte. Det kan ikke vite hva kildefilen det er i uten at du forteller det hvor du skal lete.

Jeg er ikke sikker på at dette er en beste praksis i seg selv (trenger å vite mer om søknaden din), men jeg tror neppe det er en anti-mønster så jeg tror du kan føle deg fri til å gjøre det. Moduler i Loggfila er bevisst åpen slutt å tillate denne typen mønster.

Svarte 08/10/2012 kl. 18:11
kilden bruker

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