我正在试图找出如何在多个文件中定义模块的各个部分。我使用--module amd
标志编译以下TypeScripts,并使用 require.js 库加载构建的JavaScript文件。
档案:rm.ts
export module rm {
export function init():void {
console.log("rm.init() called");
this.candidate.init();
}
}
档案:candidate.ts
export module rm.candidate {
export function init() {
console.log("rm.candidate.init() called");
}
}
文件:main.js(For require.js)
require(["rm"], function (exports) {
console.log(exports);
exports.rm.init();
});
此来电:this.candidate.init()
无效,因为 candidate.js 未包含 candidate.js 。
如何在 rm.ts 中定义 candidate.ts 的依赖关系?是否可以在多个文件中定义“子模块”,因为我尝试了它?
通过对 rm.ts 的这些调整,它可以正常工作,但似乎不是预期的方式。
import candidateTS = require("candidate");
export module rm {
export var candidate = candidateTS.rm.candidate;
export function init():void {
console.log("rm.init() called");
this.candidate.init();
}
}
也许我应该提到我第一次使用TypeScript。几乎所有处理此主题的网络上的示例都是指旧版本的TypeScript,因此我不确定如何继续。
答案 0 :(得分:2)
使用模块加载器时,通常会删除module
声明并将文件视为模块。例如......
档案:candidate.ts
export function init() {
console.log("rm.candidate.init() called");
}
档案:rm.ts
import c = require('candidate');
export function init():void {
console.log("rm.init() called");
c.init();
}
您可以看到使用import
语句加载它们,并且您提供的别名(例如下面的c
)是已加载模块的句柄。
import c = require('candidate');
c.init();