类型缺少呼叫签名

时间:2017-12-06 18:17:21

标签: javascript typescript

我不确定我缺少什么,但我有一个看起来像这样的功能:

export default function (config: DatabaseConnections<DatabaseConnection>) {
  return DB['connect'](config, throwError)
}

当我尝试使用该函数时(在我的js测试用例中),我想像这样使用它:

const db = require('../lib/DB')
db({
  master: {
    host: 'abc123',
    user: 'abc123',
    password: 'abc123',
    database: 'abc123'
  }
})

然而,当我这样做时,我收到错误:

  

无法调用类型缺少调用签名的表达式。

当我这样称呼它db.default({...})时,它有效。我怎样才能导出该函数,以便我可以像db({...})一样调用它?

1 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题

简单修复

您可以尝试从需要中获取默认值:

export default function db (...)

命名功能修复

您也可以尝试命名函数,而不是依赖默认值。

在您的数据库文件中,尝试:

const db = require('../lib/DB').db;

然后在您的测试文件中:

function db(...){ }
module.exports=db;

您也可以仅命名和导出特定功能,而不是使用默认功能。

一个la:

const db = require('../lib/DB');

然后在你的测试文件中:

export default function (config: DatabaseConnections<DatabaseConnection>):DB {
  return DB['connect'](config, throwError);
}

奖励返回类型修复

由于db函数返回一个值,您需要在函数上定义一个返回类型。

{{1}}