Oto moja sugestia. Myślę, że to, co chcesz zrobić, to zdefiniować moduł, który rozciąga się na kilka plików źródłowych. Aby to osiągnąć, trzeba użyć wewnętrzny moduł następująco:
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 deklarowany jest moduł outer
w dwóch plikach źródłowych. Ponieważ jest to moduł wewnętrzny, musimy powiedzieć kompilatorowi, aby umieścić je w naszym zasięgu, dodając instrukcje ///<reference path='foo.ts'/>
.
Działa również w Visual Studio. Czy będzie możliwe zaimportowanie tylko jednego z tych plików? W VS zwykle używasz /// . Czy to byłoby możliwe? E.g: <ścieżka odniesienia = "AllModels.ts" />? –
Anders
Dla przyszłego odniesienia jest to możliwe. Można więc utworzyć jeden plik "allModels.ts", który zawiera /// pliki referencyjne. – Anders
dlaczego przechowywać Osobę i Wiadomość w osobnych plikach? Czy mogę mieć plik Model.ts z tylko definicjami klas bez zawijania w moduł? Jeśli tak, to w jaki sposób zaimportować te definicje w App.ts .. – FutuToad