Tapuscrit modules internes à travers plusieurs fichiers

voix
5

Supposons que la définition de classe suivante à l'aide tapuscrit en Animal.ts:

module Animals
{
    export class Animal { }    
}

Si je veux créer une classe de chien dans un fichier séparé, par exemple dans Dog.ts en utilisant ce code:

module Animals
{
    export class Dog extends Animal { }
}

le nom « Animal » n'existe pas dans la portée actuelle, est l'erreur que je reçois dans la définition de la classe Dog.

L'ajout de la ligne suivante à Dog.ts

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

corrige l'erreur de compilation mais pourquoi est-ce nécessaire, si les deux classes sont définies dans le même module?

En d'autres termes, je veux des déclarations du module d'étendent sur des fichiers avec chaque classe ou une définition d'interface dans leur propre fichier. Est-ce encore les meilleures pratiques?

Créé 08/10/2012 à 19:06
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
5

Tout d'abord, si vous compilez les fichiers à la fois à l'aide

tsc Animal.ts Dog.ts

tout ira bien. Lors de la compilation des fichiers Typescript, le compilateur doit être informé de ce que les fichiers réellement Constitué le programme . Cela peut être fait en utilisant des références de source avec ///ou en fournissant tous les fichiers au compilateur. Ceci est quelque peu différente dans d'autres langues telles que java, qui compilent à une représentation intermédiaire et qui ont une notion d' CLASSPATHoù rechercher d'autres fichiers qui font partie du programme.

Créé 08/10/2012 à 19:31
source utilisateur

voix
2

La référence /// est nécessaire parce que le compilateur a besoin de savoir où des animaux est définie en quelque sorte. Il ne peut pas savoir quel fichier source, il est en sans dire que vous là où regarder.

Je ne suis pas sûr que ce soit une bonne pratique en soi (aurait besoin de savoir plus sur votre demande) mais je ne pense pas que c'est un anti-modèle, donc je pense que vous pouvez vous sentir libre de le faire. Les modules dactylographiée sont délibérément à composition non limitée pour permettre ce genre de modèle.

Créé 08/10/2012 à 19:11
source utilisateur

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