2015-06-19 44 views
0

我想为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... 
}; 

我设法写.d.ts为CSON模块,没问题,但那是直接导出'类'而不是函数。这很重要吗?

回答

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; 
} 

这将允许你打电话给它,你在做你的 题。

+0

这很好。谢谢。 –