我试图在Typescript中模仿C#的一个特性.
假设我有这个文件夹结构
App.ts
Models/
Person.ts
Message.ts
Run Code Online (Sandbox Code Playgroud)
然后我App.ts想要这个:
module MyAppNamespace {
export class ChatApp {
User: Models.Person;
constructor () => {
this.User = new Models.Person("John");
this.User.Message = new Models.Message("Hello World");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
Val*_*tin 33
这是我的建议.我想你想要做的是定义一个扩展到几个源文件的模块.要实现此目的,您需要使用内部模块,如下所示:
型号/ Person.ts
module Model {
export class Person {
name: string;
Message : Message;
constructor(name: string) {
this.name = name;
}
}
}
Run Code Online (Sandbox Code Playgroud)
型号/ Message.ts
module Model {
export class Message {
message: string;
constructor(message: string) {
this.message = message;
}
}
}
Run Code Online (Sandbox Code Playgroud)
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你用它编译
tsc App.ts
Run Code Online (Sandbox Code Playgroud)
一切都应该有效.注意如何outer在两个源文件中声明模块.由于这是一个内部模块,我们必须通过添加///<reference path='foo.ts'/>语句告诉编译器将它们放入我们的范围.
| 归档时间: |
|
| 查看次数: |
15171 次 |
| 最近记录: |