Typescript 0.9.1.1模块分为几个.ts文件

时间:2013-12-05 15:40:01

标签: javascript requirejs typescript

我正在试图找出如何在多个文件中定义模块的各个部分。我使用--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,因此我不确定如何继续。

1 个答案:

答案 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();