说我想每个.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/

10-12 12:27
查看更多