假设我已经将这两个有趣的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个请求。我的问题更多是关于开发便利性而不是性能。
您可以将以下两行添加到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
-因为您是通过直接导出来展示所有细节的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句