如何为替换“exports”对象的模块创建Typescript(1.8)类型定义?

时间:2016-05-14 13:41:33

标签: node.js module typescript definitelytyped

我正在尝试为使用匿名函数替换module.exports的模块创建类型定义。因此,模块代码执行此操作:

module.exports = function(foo) { /* some code */}

要在JavaScript(Node)中使用该模块,我们这样做:

const theModule = require("theModule");
theModule("foo");

我写了一个.d.ts文件来执行此操作:

export function theModule(foo: string): string;

然后我可以像这样写一个TypeScript文件:

import {theModule} from "theModule";
theModule("foo");

当我转向JavaScript时,我得到:

const theModule_1 = require("theModule");
theModule_1.theModule("foo");

我不是模块作者。所以,我无法更改模块代码。

如何编写我的类型定义,以便正确转换为:

const theModule = require("theModule");
theModule("foo");

编辑:为清楚起见,根据正确答案,我的最终代码如下:

的-module.d.ts

declare module "theModule" {
    function main(foo: string): string;
    export = main;
}

的模块-test.ts

import theModule = require("theModule");
theModule("foo");

将转换为 the-module-test.js

const theModule = require("theModule");
theModule("foo");

1 个答案:

答案 0 :(得分:2)

对于导出函数的节点式模块,use export =

function theModule(foo: string): string;
export = theModule;