随机字符串模块的类型定义异常
Posted
技术标签:
【中文标题】随机字符串模块的类型定义异常【英文标题】:Exception with type definition for random-string module 【发布时间】:2015-09-05 14:26:42 【问题描述】:我正在尝试为 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,没问题,但那是导出一个“类”而不是直接导出一个函数。这很重要吗?
【问题讨论】:
【参考方案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;
这将允许您像在问题中那样调用它。
【讨论】:
以上是关于随机字符串模块的类型定义异常的主要内容,如果未能解决你的问题,请参考以下文章
ModuleBuildError:模块构建失败:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义