2012-10-11 18 views
22

Ben bu makaledeki C# karakterlerini taklit etmeye çalışıyorum.Birden çok dosyada TypeScript modülü ad alanı belirleme

Let bunu istiyor ben App.ts bu klasör yapısını

App.ts 
Models/ 
    Person.ts 
    Message.ts 

Sonra var ki:

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

Bunu nasıl yapardın?

cevap

33

İşte önerim. Yapmak istediğin, birkaç kaynak dosya üzerinde uzanan bir modül tanımlamak olduğunu düşünüyorum. Bunu başarmak için, aşağıdaki gibi bir modülünü kullanmak gerekir:

Modelleri/Person.ts

module Model { 

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

Modelleri/Message.ts

module Model { 
    export class Message { 
     message: string; 
     constructor(message: string) { 
      this.message = message; 
     } 
    } 
} 

App .ts

Eğer

tsc App.ts 

ile bu derlerseniz

sonra her şey çalışmalıdır. İki kaynak dosyada modülün outer bildirildiğine dikkat edin. Bu bir modülü olduğundan, derleyiciye ///<reference path='foo.ts'/> ifadeleri ekleyerek bunları kapsamımıza koymasını söylememiz gerekir.

+0

Visual Studio'da da iyi çalışıyor. Sadece bu dosyalardan birini içe aktarmak mümkün mü? VS'de normalde /// . Bu mümkün mü? E.g: ? – Anders

+1

Gelecekte başvurmak için bu mümkündür. Böylece /// refs içeren bir "allModels.ts" dosyası oluşturabilirsiniz. – Anders

+0

Neden Kişiyi ve İletiyi ayrı dosyalarda saklayın? Bir modüle sarılmadan sadece sınıf tanımlarıyla Model.ts dosyası alabilir miyim? Öyleyse, bu tanımları App.ts dosyasında nasıl içe aktarabilirim? – FutuToad