Gépelt belső modulok több fájlban

szavazat
5

Tegyük fel, hogy a következő osztály definíció felhasználásával géppel a Animal.ts:

module Animals
{
    export class Animal { }    
}

Ha azt akarom, hogy hozzon létre egy kutya osztály egy külön fájlban, mondjuk Dog.ts ezt a kódot:

module Animals
{
    export class Dog extends Animal { }
}

A név „Animal” nem létezik a jelenlegi körét, a hiba kapok osztály definíciója Dog.

Hozzáadjuk a következő sort Dog.ts

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

kijavítja a fordítási hiba, de miért van erre szükség, ha mindkét osztályokat definiálja az azonos modult?

Más szóval, azt akarom modul nyilatkozatok átívelnek fájlok minden osztály vagy interfész definíciós saját fájlban. Ez még a legjobb gyakorlat?

A kérdést 08/10/2012 19:06
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
5

Először is, ha összeállításához mindkét fájlt egyszerre használ

tsc Animal.ts Dog.ts

minden rendben lesz. Összeállításakor géppel fájlokat, a fordító kell tudatosítani, hogy milyen fájlokat ténylegesen constitue a program . Ez megtehető forrás hivatkozásokat ///vagy azáltal, hogy minden fájlt a fordítónak. Ez némileg különbözik más nyelvek, mint java, ami összeállítani egy köztes reprezentációs és egy fogalma CLASSPATHhol keressen más fájlokat, amelyek a program része.

Válaszolt 08/10/2012 19:31
a forrás felhasználó

szavazat
2

A /// referencia van szükség, mert a fordítóprogram tudnia kell, hogy hol Animal határozza valahogy. Ez nem tudom, mi forrás fájl benne van anélkül, hogy megmondja, hol kell keresni.

Nem vagyok biztos, hogy ez a legjobb módszer önmagában (kellene többet tudni az alkalmazás), de nem hinném, hogy ez egy anti-minta, így azt hiszem, nyugodtan csinálni. Modulok géppel szándékosan felülről nyitott, hogy ez a fajta mintát.

Válaszolt 08/10/2012 19:11
a forrás felhasználó

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