假设我想每个.ts文件有一个类.我有两个.ts文件,看起来像这样:
export module MyClasses { export class A {} }
Run Code Online (Sandbox Code Playgroud)
和
export module MyClasses { export class B {} }
Run Code Online (Sandbox Code Playgroud)
我不能这样做:
import MyClasses = module('A');
import MyClasses = module('B');
Run Code Online (Sandbox Code Playgroud)
如何在单独的文件中定义类并将它们放在同一个"命名空间"中?此外,我们最终必须做以下事情:
MyClasses.MyClasses.A
Run Code Online (Sandbox Code Playgroud)
代替
MyClasses.A
Run Code Online (Sandbox Code Playgroud)
这种额外的层次结构有什么意义?这样你就可以在模块文件中有多个导出的模块?到目前为止,我已经弄清楚的最好的解决方案是删除"导出模块"(因为编译AMD时"导出类"似乎已经足够了),这会使类升级到一个层次级别.然后:
import AModule = module('A');
module MyClasses{ var A = AModule.A; }
import BModule = module('B');
module MyClasses { var B = BModule.B; }
Run Code Online (Sandbox Code Playgroud)
虽然它完美无缺,但它并不完全简洁.有没有更好的方法来做到这一点?
不幸的是,似乎没有一个完美的解决方案,但这就是我现在解决它的方式:
文件'Controllers/MainController.ts':
class MainController {
...
}
export = MainController;
Run Code Online (Sandbox Code Playgroud)
文件'Controllers/SecondController.ts':
class SecondController {
...
}
export = SecondController;
Run Code Online (Sandbox Code Playgroud)
文件'Controllers/Namespace.ts':
import MainController = require('./MainController');
import SecondController = require('./SecondController');
export = { MainController, SecondController }
Run Code Online (Sandbox Code Playgroud)
文件'App.ts'(使用'命名空间')
import Controllers = require('Controllers/Namespace');
angular.module('app', [])
.controller('MainController', Controllers.MainController)
.controller('SecondController', Controllers.SecondController)
Run Code Online (Sandbox Code Playgroud)
这给你很好的intellisense,隐藏了400个import语句,并保留了实际使用命名空间的代码非常干净......
请原谅糟糕的变量名称,我正在 Visual Studio 中对此进行测试。当我为导入语句使用不同的名称时,它对我有用。
import x = module('A');
import y = module('B');
x.MyClasses.A;
y.MyClasses.B;
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用参考注释来达到类似的效果,但是如果您正在捆绑,则这会更好,而不是如果您正在使用模块加载。您需要export从两个MyClasses声明中删除关键字:
///<reference path='A.ts'/>
///<reference path='B.ts'/>
var x = MyClasses.A;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10520 次 |
| 最近记录: |