我有以下函数,我似乎找不出它的返回类型
export function save(contractType: ContractType, tx?: Knex.Transaction): any {
return db
.connection(tx)(CONTRACT_TYPE_TABLE)
.insert(contractType)
.catch(err => {
throw new DatabaseError(en.GENERIC_ERROR, err);
});
}发布于 2019-01-23 15:39:08
根据GitHub上可用的类型定义,我假设您正在处理一个QueryBuilder实例。
interface QueryBuilder extends QueryInterface, ChainableInterface 这意味着您的Insert方法在实现QueryInterface和ChainableInterfaces接口的东西上被调用。
Insert是在QueryInterface接口中定义的,并返回被调用的QueryBuilder。信息不多。
看一下ChainableInterface,我们注意到它扩展了BlueBird<any>。
interface ChainableInterface extends Bluebird<any> 蓝鸟是众多JavaScript承诺库之一。您可以阅读更多关于它的这里。
所以,总结一下我们目前所知道的.
插入返回
Bluebird<any>
从蓝鸟库来看,Catch似乎返回了调用它的诺言对象(就像从承诺库中期望的那样)。这意味着您的方法实际上返回了一个Bluebird<any>承诺
至于实际的类型..。根据Knex文档中可用的示例,Insert应该返回一个数组,其中包含插入记录的索引。因此,它应该足够安全地假设您使用的是返回一个数字数组的承诺。
最后:
您的方法正在返回一个QueryBuilder对象,该对象可能用于构建更多的查询(这应该是ChainableInterface的目的)。它还应该作为一个Bluebird<number[]>承诺,您可以使用它获得插入的记录标识符(如果需要的话)。
https://stackoverflow.com/questions/54326293
复制相似问题