【问题标题】: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,没问题,但那是导出一个“类”而不是直接导出一个函数。这很重要吗?

【问题讨论】:

    标签: node.js module typescript


    【解决方案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;
    }
    

    这将允许您像在问题中那样调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2016-06-29
      相关资源
      最近更新 更多