espacios de nombre del módulo de transcripción en varios archivos

votos
22

Estoy tratando de imitar una característica de C # a máquina de escribir.

Digamos que tengo esta estructura de carpetas

App.ts
Models/
    Person.ts
    Message.ts

Entonces en App.tsquiero esto:

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

¿Cómo puedo hacer esto?

Publicado el 11/10/2012 a las 19:03
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
33

Aquí está mi sugerencia. Creo que lo que quiere hacer es definir un módulo que se extiende sobre varios ficheros fuente. Para lograr esto, es necesario utilizar un interno del módulo de la siguiente manera:

Modelos / Person.ts

module Model {

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

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

Si se compila con esta

tsc App.ts

entonces todo debería funcionar. Observe cómo el módulo outerse declara en dos archivos de origen. Dado que este es un interno del módulo, tenemos que decirle al compilador para ponerlos en nuestro ámbito añadiendo///<reference path='foo.ts'/> declaraciones.

Respondida el 11/10/2012 a las 19:42
fuente por usuario

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