我不确定我错过了什么,但我有一个看起来像这样的函数:
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'
}
})
但是,当我这样做时,出现错误:
Cannot invoke an expression whose type lacks a call signature.
当我像这样调用它时 db.default({...})
它起作用了。我怎样才能让它导出函数,这样我就可以像这样调用它 db({...})
?
最佳答案
有几种方法可以解决这个问题
简单修复
您可以尝试从 require 中获取默认值:
const db = require('../lib/DB').default;
命名函数修复
您也可以尝试命名函数而不是依赖默认值。
在您的数据库文件中,尝试:
export default function db (...)
然后在你的测试文件中:
const db = require('../lib/DB').db;
您还可以仅命名和导出特定函数,而不是使用默认函数。
啦啦:
function db(...){ }
module.exports=db;
然后在你的测试文件中:
const db = require('../lib/DB');
奖金返还类型修复
由于 db 函数返回一个值,因此您需要在该函数上定义一个返回类型。
export default function (config: DatabaseConnections<DatabaseConnection>):DB {
return DB['connect'](config, throwError);
}
关于javascript - 类型缺少调用签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47680937/