Typescript中knex的默认返回类型是什么?

时间:2019-01-23 11:32:16

标签: javascript typescript

我具有以下功能,但似乎无法弄清其返回类型

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);
    });
}

1 个答案:

答案 0 :(得分:0)

基于GitHub上可用的类型定义,我假设您正在使用QueryBuilder实例。

interface QueryBuilder extends QueryInterface, ChainableInterface 

这意味着您的Insert方法在实现QueryInterfaceChainableInterfaces接口的对象上被调用。

InsertQueryInterface接口中定义,并返回它被调用的QueryBuilder。信息不多。

相反,我们看着ChainableInterface扩展了BlueBird<any>

interface ChainableInterface extends Bluebird<any> 

Bluebird是许多JavaScript Promise库之一。您可以详细了解here

所以,总结到目前为止我们所知道的一切...

  

插入返回Bluebird<any>

看一下Bluebird库,似乎Catch返回了已被调用的Promise对象(如Promise库所期望的那样)。这意味着您的方法实际上返回了Bluebird<any>许诺

对于实际类型...根据Knex文档中提供的示例,Insert应该返回一个带有插入记录索引的数组。因此,假设您正在使用返回数字数组的Promise,应该足够安全。

结论:

您的方法返回一个QueryBuilder对象,该对象可用于构建更多查询(这应该是ChainableInterface的目的)。 应该还可以作为Bluebird<number[]>的保证,如果需要,您可以用来获取插入的记录标识符。