TypeScript modül ad alanları birden çok dosyada
Typescript'te C#'ın bir özelliğini taklit etmeye çalışıyorum.
Diyelim ki bu klasör yapısına sahibim
App.ts
Models/
Person.ts
Message.ts
Sonra App.ts içinde bunu istiyorum:
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ım?
Cevap #1
İşte benim önerim. Sanırım yapmak istediğiniz şey, birkaç kaynak dosyaya yayılmış bir modül tanımlamak. Bunu başarmak için, bir içsel modül kullanmanız gerekir, şu şekilde:
Models/Kisi.ts
module Model {
export class Person {
name: string;
Message : Message;
constructor(name: string) {
this.name = name;
}
}
}
Models/Mesaj.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");
}
}
}
Bunu ile derlerseniz
tsc App.ts
o zaman her şey çalışmalıdır. outer modülünün iki kaynak dosyada bildirildiğine dikkat edin. Bu bir internal modül olduğundan, derleyiciye bunları kapsamımıza eklemesi için ///<reference path='foo.ts'/> ifadelerini eklememiz gerekir.
