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

Typescript 0.9.1.1 module splitted into several .ts files

本文关键字:几个 ts 文件 模块 拆分 Typescript      更新时间:2024-03-17

我正试图弄清楚如何在多个文件中定义模块的各个部分。我使用--module amd标志编译以下TypeScripts,并使用require.js库加载构建的JavaScript文件。

文件:rm.ts

export module rm {
   export function init():void {
       console.log("rm.init() called");
       this.candidate.init();
   }
}

文件:候选者.ts

export module rm.candidate {
    export function init() {
        console.log("rm.candidate.init() called");
    }
}

文件:main.js(用于require.js)

require(["rm"], function (exports) {
    console.log(exports);
    exports.rm.init();
});

此调用:this.candidate.init()不起作用,因为candidate.js未包含在require.js.中

如何定义rm.tscandidate.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,所以我不知道如何继续。

使用模块加载程序时,通常会删除module声明,并将文件视为模块。例如

文件:候选人.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();