说我想每个.ts文件有一个类。我有两个.ts文件,看起来像这样:
export module MyClasses { export class A {} }
和
export module MyClasses { export class B {} }
我不能这样做:
import MyClasses = module('A');
import MyClasses = module('B');
如何在单独的文件中定义类并将它们放入相同的“命名空间”?此外,我们最终不得不做类似的事情:
MyClasses.MyClasses.A
代替
MyClasses.A
这种附加层次结构的意义何在?这样一来,一个模块文件中可以有多个导出的模块?到目前为止,我发现的最佳解决方案是删除“导出模块”(因为在编译AMD时“导出类”似乎就足够了),这会将类上移了一个层次。然后:
import AModule = module('A');
module MyClasses{ var A = AModule.A; }
import BModule = module('B');
module MyClasses { var B = BModule.B; }
虽然效果很好,但并不十分简洁。有没有更好的方法可以做到这一点?
最佳答案
不幸的是,似乎没有一个完美的解决方案,但这是我现在解决的方法:
文件'Controllers / MainController.ts':
class MainController {
...
}
export = MainController;
文件“Controllers / SecondController.ts”:
class SecondController {
...
}
export = SecondController;
文件“Controllers / Namespace.ts”:
import MainController = require('./MainController');
import SecondController = require('./SecondController');
export = { MainController, SecondController }
文件“App.ts”(使用“命名空间”的地方)
import Controllers = require('Controllers/Namespace');
angular.module('app', [])
.controller('MainController', Controllers.MainController)
.controller('SecondController', Controllers.SecondController)
这给了您很好的智能感知,隐藏了400个import语句,并使实际上使用命名空间的代码保持整洁。
关于typescript - 如何在TypeScript中将多个外部模块放入同一个命名空间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12882748/