Oto moja propozycja. Myślę, że to, co chcesz zrobić, to określić moduł, który rozciąga się na przestrzeni kilku plików źródłowych. Aby to osiągnąć, trzeba korzystać z wewnętrznego modułu w następujący sposób:
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");
}
}
}
Jeśli skompilować to z
tsc App.ts
wtedy wszystko powinno działać. Zauważ, jak moduł outerjest zadeklarowana w dwóch plików źródłowych. Ponieważ jest to wewnętrzny moduł, musimy poinformować kompilator, aby umieścić je w naszym zasięgu poprzez dodanie ///<reference path='foo.ts'/>oświadczenia.