Strojopis modulu jmenného prostoru ve více souborech

hlasů
22

Snažím se napodobovat funkci C # na psacím stroji.

Řekněme, mám tuto adresářovou strukturu

App.ts
Models/
    Person.ts
    Message.ts

Pak jsem v App.tschci toto:

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

Jak bych to udělat?

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


1 odpovědí

hlasů
33

Tady je můj návrh. Myslím, že to, co chcete udělat, je definovat modul, který se táhne přes několik zdrojových souborů. K dosažení tohoto cíle, je třeba použít interní modul následovně:

Modely / Person.ts

module Model {

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

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

Pokud kompilace to s

tsc App.ts

pak by vše mělo fungovat. Všimněte si, jak modul outerje deklarován ve dvou zdrojových souborů. Protože se jedná o interní modul, musíme říci kompilátoru dát je do naší působnosti přidáním ///<reference path='foo.ts'/>prohlášení.

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

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