Moduł maszynopis Przestrzenie nazw w wielu plikach

głosy
22

Staram się naśladować cechę C # w maszynopisie.

Powiedzmy, że mam tej struktury folderów

App.ts
Models/
    Person.ts
    Message.ts

I wtedy w App.tschcą w ten sposób:

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

W jaki sposób mogę to zrobić?

Utwórz 11/10/2012 o 19:03
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
33

Oto moja propozycja. Myślę, że to, co chcesz zrobić, to określić moduł, który rozciąga się na przestrzeni kilku plików źródłowych. Aby to osiągnąć, trzeba korzystać z wewnętrznego modułu w następujący sposób:

Models / Person.ts

module Model {

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

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

Jeśli skompilować to z

tsc App.ts

wtedy wszystko powinno działać. Zauważ, jak moduł outerjest zadeklarowana w dwóch plików źródłowych. Ponieważ jest to wewnętrzny moduł, musimy poinformować kompilator, aby umieścić je w naszym zasięgu poprzez dodanie ///<reference path='foo.ts'/>oświadczenia.

Odpowiedział 11/10/2012 o 19:42
źródło użytkownik

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