假设我已经将这两个有趣的Typescript库实现为AMD模块。
MathBasics.ts
module MathBasics {
export function add(a: number, b: number) {
return a + b;
}
export function substract(a: number, b: number) {
return a - b;
}
}
export = MathBasics
MathAdvanced.ts
module MathAdvanced {
export function mult(a: number, b: number) {
return a * b;
}
export function div(a: number, b: number) {
return a / b;
}
}
export = MathAdvanced
如何在一个MathAll.ts库中将它们组合在一起,这样客户端代码就不必引用它们。
MathAll.ts
import MathBasics = require("MathBasics");
import MathAdvanced = require("MathAdvanced");
module MathAll {
export var MathBasics: MathBasics;
export var MathAdvanced : MathAdvanced;
//Error: Type reference cannot refer to container
export module MathBasics;
export module MathAdvanced;
//Error: '{' expected
export MathBasics;
export MathAdvanced;
//Error: Unexpected token; 'module, class, interface, enum, import or statement' expected.
}
export = MathAll;
我现在不在乎是否有1或3个请求。我的问题更多的是关于开发便利而不是性能。
答案 0 :(得分:2)
您只需将以下两行添加到MathAll.ts
文件中即可:
export import MathBasics = require("MathBasics");
export import MathAdvanced = require("MathAdvanced");
这将允许您基本上使用MathAll
psudeo-module ...
import math = require('./MathAll');
math.MathAdvanced....
但是它会对你的自动完成造成一些破坏,并且有一些提示,这可能会在未来被禁止,这将破坏你的程序 - 所以要小心使用这个技巧。
所以现在我已经展示了你可以做什么,希望你会接受我的建议,你不这样做(因为你知道我不是说“不要这样做” “只是因为我不知道你怎么做。”
组织您的模块的方式使每个模块本身都可以进行导入。在我需要时导入MathBasics
并在需要时导入MathAdvanced
会非常困难吗?
如果您隐藏了实现细节,那么这是另一回事 - 但您绝对不会在export import
时隐藏实现细节 - 因为您通过直接导出它们来展示所有细节。