24

Typescript で 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");
        }
    }
}

どうすればいいですか?

4

1 に答える 1

33

これが私の提案です。あなたがやりたいのは、いくつかのソースファイルにまたがるモジュールを定義することだと思います。これを実現するには、次のように内部モジュールを使用する必要があります。

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

これをコンパイルすると

tsc App.ts

その後、すべてが機能するはずです。モジュールouterが2つのソースファイルでどのように宣言されているかに注目してください。これは内部///<reference path='foo.ts'/>モジュールであるため、ステートメントを追加してスコープに入れるようにコンパイラーに指示する必要があります。

于 2012-10-11T18:42:19.350 に答える