随机字符串模块的类型定义异常

时间:2015-06-19 14:40:22

标签: node.js module typescript

我正在尝试为random-string写一个.d.ts。

我有这段代码:

declare module "random-string" {
    export function randomString(opts?: Object): string;
}

我可以通过以下方式导入模块:

import randomString = require('random-string');

并调用:

console.log(randomString); // --> [Function: randomString]

但是,无论有没有参数,这都不起作用:

console.log(randomString({length: 10});
console.log(randomString());

我从tsc获得此错误:

  

错误TS2088:无法调用类型缺少调用签名的表达式。

我查看了随机字符串的源代码,并找到了我尝试与之交互的方法的代码:

module.exports = function randomString(opts) {
   // Implementation...
};

我设法为CSON模块写了一个.d.ts,没问题,但那是直接导出'class'而不是函数。这有意义吗?

1 个答案:

答案 0 :(得分:1)

你的声明说有一个名为random-string的模块,其中有一个名为randomString的函数......

所以你的用法应该是:

console.log(randomString.randomString({ length: 10 }));
console.log(randomString.randomString());

如果模块确实直接提供了这个功能,你应该调整你的定义来做同样的事情:

declare module "random-string" {
    function randomString(opts?: Object): string;

    export = randomString;
}

这样您就可以像在问题中一样调用它。