Module dactylographiée dans l'espace de nommage plusieurs fichiers

voix
22

Je suis en train d'imiter une caractéristique de C # dactylographiée.

Disons que j'ai cette structure de dossiers

App.ts
Models/
    Person.ts
    Message.ts

Je puis en App.tsveux ceci:

module MyAppNamespace {
    export class ChatApp {
        User: Models.Person;
        constructor () => {
            this.User = new Models.Person(John);
            this.User.Message = new Models.Message(Hello World);
        }
    }
}

Comment puis-je faire cela?

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


1 réponses

voix
33

Voici ma suggestion. Je pense que ce que vous voulez faire est de définir un module qui étend sur plusieurs fichiers source. Pour ce faire , vous devez utiliser un interne module comme suit:

Modèles / Person.ts

module Model {

  export class Person {
      name: string;
      Message : Message;
      constructor(name: string) {
          this.name = name;
      }   
  }
}

Modèles / Message.ts

module Model {
   export class Message {
       message: string;
       constructor(message: string) {
          this.message = message;
       }   
   }
}

App.ts

///<reference path='Models/Person.ts'/>
///<reference path='Models/Message.ts'/>
module MyAppNamespace {
    export class ChatApp {
        User: Model.Person;
        constructor () => {
            this.User = new Model.Person("John");
            this.User.Message = new Model.Message("Hello World");
        }   
    }   
}

Si vous compilez cela avec

tsc App.ts

alors tout devrait fonctionner. Remarquez comment le module outerest déclaré dans deux fichiers source. Étant donné que c'est un interne module, nous devons dire au compilateur de les mettre dans notre champ en ajoutant des ///<reference path='foo.ts'/>déclarations.

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

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