我有以下功能,我似乎无法弄清楚它的返回类型
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);
});
}
根据GitHub上可用的类型定义,我假设您正在使用QueryBuilder
实例。
interface QueryBuilder extends QueryInterface, ChainableInterface
这意味着您的Insert方法在实现QueryInterface
和ChainableInterfaces
接口的对象上被调用。
Insert
在QueryInterface
接口中定义,并返回QueryBuilder
它已被调用。没有太多的信息。
查看,ChainableInterface
我们注意到它扩展了BlueBird<any>
。
interface ChainableInterface extends Bluebird<any>
Bluebird是许多JavaScript Promise库之一。您可以在这里了解更多信息
所以,总结到目前为止我们所知道的一切...
插入退货
Bluebird<any>
查看Bluebird库,它似乎Catch
返回了已被调用的Promise对象(如Promise库所期望的那样)。这意味着您的方法实际上返回了一个Bluebird<any>
Promise
至于实际类型...根据Knex文档中提供的示例,Insert
应返回一个包含插入记录索引的数组。因此,假设您正在使用返回数字数组的Promise,应该足够安全。
结论:
您的方法正在返回一个QueryBuilder
可用于构建更多查询的对象(这应该是的目的ChainableInterface
)。它应该也作为一个Bluebird<number[]>
承诺,你可以使用,如果需要得到插入的记录标识符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句