Typoskript Modul Namespacing in mehreren Dateien

stimmen
22

Ich versuche, eine Funktion von C # in Typoskript zu imitieren.

Lassen Sie sagen, dass ich diese Ordnerstruktur haben

App.ts
Models/
    Person.ts
    Message.ts

Ich habe dann in App.tswollen , dass diese:

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

Wie würde ich das tun?

Veröffentlicht am 11/10/2012 um 19:03
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
33

Hier ist mein Vorschlag. Ich denke , was Sie tun möchten , ist ein Modul zu definieren , die mehrere Quelldateien erstreckt. Um dies zu erreichen, müssen Sie ein verwenden interne Modul wie folgt:

Modelle / Person.ts

module Model {

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

Modelle / 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");
        }   
    }   
}

Wenn Sie diese kompilieren mit

tsc App.ts

dann sollte alles funktionieren. Beachten Sie, wie Modul outerin zwei Quelldateien deklariert wird. Da dies ein ist internes Modul, haben wir den Compiler sagen , sie in unserem Rahmen , indem zu setzen ///<reference path='foo.ts'/>Aussagen.

Beantwortet am 11/10/2012 um 19:42
quelle vom benutzer

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