Modul în typescript mai multe fișiere spațiu de nume

voturi
22

Am încercat să imite o caracteristică a C # dactilografiat.

Să presupunem că am această structură dosar

App.ts
Models/
    Person.ts
    Message.ts

Eu atunci în App.tsdoresc acest lucru:

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

Cum aș face acest lucru?

Întrebat 11/10/2012 la 19:03
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
33

Aici este sugestia mea. Cred că ceea ce doriți să faceți este să definească un modul care se extinde pe mai multe fișiere sursă. Pentru a realiza acest lucru, trebuie să utilizați un intern modul cum urmează:

Modele / Person.ts

module Model {

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

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

Dacă compilați acest lucru cu

tsc App.ts

atunci totul ar trebui să funcționeze. Observați modul în care modulul outereste declarat în două fișiere sursă. Deoarece acesta este un intern modul, trebuie să spunem compilator pentru a le pune în aplicare nostru prin adăugarea de ///<reference path='foo.ts'/>declarații.

Publicat 11/10/2012 la 19:42
sursa de către utilizator

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