gpt4 book ai didi

typescript - 如何在 Knex.raw 中使用泛型?

转载 作者:行者123 更新时间:2023-12-05 08:10:39 25 4
gpt4 key购买 nike

我正在尝试输入以下代码。不使用类型断言,我如何使用泛型来键入它?

const result = await knex.raw<string>('select NOW()');

console.log(result?.rows[0]) //Print the date

现在 typescript 会将 result 推断为 string,但它应该具有如下形状:

Result {
command: 'SELECT',
rowCount: 1,
oid: null,
rows: [ { now: 2022-05-10T19:28:43.624Z } ],
fields: [
Field {
name: 'now',
tableID: 0,
columnID: 0,
dataTypeID: 1184,
dataTypeSize: 8,
dataTypeModifier: -1,
format: 'text'
}
],
_parsers: [ [Function: parseDate] ],
_types: TypeOverrides {
_types: {
getTypeParser: [Function: getTypeParser],
setTypeParser: [Function: setTypeParser],
arrayParser: [Object],
builtins: [Object]
},
text: {},
binary: {}
},
RowCtor: null,
rowAsArray: false
}

我试图寻找 Result 的类型,但 Knex 似乎没有默认提供?

https://github.com/knex/knex/blob/master/types/result.d.ts

最佳答案

删除 await,变量将具有您想要的形状:

const query: Knex.Raw<Result> = knex.raw('select NOW()');

但您必须手动输入 Knex<Raw<Result> , 其中Result是等待查询后将获得的结果的形状。这个形状不会是一个字符串。根据您的代码 ( result?.rows[0] ),形状将类似于:

type Result = { rows: [string] };

我已经在 sqlite 中对此进行了测试,得到的形状不同,但仍然不是字符串。

关于typescript - 如何在 Knex.raw 中使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72192037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com