Модуль машинопись Пространства имен в нескольких файлах

голоса
22

Я пытаюсь имитировать особенность C # в машинописи.

Пусть говорят, у меня есть эта структура папок

App.ts
Models/
    Person.ts
    Message.ts

Я тогда в App.tsхочу это:

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

Как мне это сделать?

Задан 11/10/2012 в 19:03
источник пользователем
На других языках...                            


1 ответов

голоса
33

Вот мое предложение. Я думаю , что вы хотите сделать , это определить модуль , который проходит в течение нескольких исходных файлов. Для достижения этой цели необходимо использовать внутренний модуль следующим образом :

Модели / Person.ts

module Model {

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

Модели / 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");
        }   
    }   
}

Если вы собираете это с

tsc App.ts

то все должно работать. Обратите внимание на то, как модуль outerобъявлен в двух исходных файлах. Поскольку это внутренний модуль, мы должны сказать компилятору , чтобы поместить их в нашу сферу путем добавления ///<reference path='foo.ts'/>заявления.

Ответил 11/10/2012 в 19:42
источник пользователем

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