我正在尝试为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'而不是函数。这有意义吗?
答案 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;
}
这样您就可以像在问题中一样调用它。