Strojopisem vnitřních modulů napříč několika souborů

hlasů
5

Předpokládejme, že následující definici třídy pomocí strojopisu v Animal.ts:

module Animals
{
    export class Animal { }    
}

Chci-li vytvořit třídu psa v samostatném souboru, řekněme v Dog.ts pomocí tohoto kódu:

module Animals
{
    export class Dog extends Animal { }
}

název „Animal“ neexistuje v současném rozsahu, je to chyba, jsem si v definici třídy pes.

Přidání následující řádek Dog.ts

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

opravuje chybu kompilace, ale proč je to nutné, je-li obě třídy jsou definovány v rámci stejného modulu?

Jinými slovy, chci prohlášení modul span přes soubory s každou třídu nebo definici rozhraní ve vlastním souboru. Je to vůbec nejlepší praxe?

Položena 08/10/2012 v 19:06
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
5

Za prvé, pokud při kompilaci oba soubory najednou pomocí

tsc Animal.ts Dog.ts

všechno bude v pořádku. Při sestavování strojopisem souborů, musí být informováni o tom, co vlastně soubory constitue kompilátor program . To lze provést pomocí zdrojových odkazů s ///nebo poskytnutím všechny soubory kompilátor. To je poněkud odlišný od jiných jazyků, například java, které sestavují do mezilehlé reprezentaci a mají představu o CLASSPATH, kde hledat další soubory, které jsou součástí programu.

Odpovězeno 08/10/2012 v 19:31
zdroj uživatelem

hlasů
2

/// odkaz je nutný, protože kompilátor potřebuje vědět, kde je definována Animal nějak. Nemůže vědět, co zdrojový soubor je to, aniž si to říkat, kam se dívat.

Nejsem si jist, že to je nejlepší praxe sama o sobě (by měli vědět více o vaší žádosti), ale sotva jsem si, že je to anti-vzor, ​​takže myslím, že můžete bez obav udělat. Moduly na stroji jsou záměrně s otevřeným koncem, aby bylo možné tento druh vzoru.

Odpovězeno 08/10/2012 v 19:11
zdroj uživatelem

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