[英]Typing for graphql resolver function
查看了有关如何为柯里化函数编写类型的示例,但我仍然无法将两者联系起来。
这是我的旋转变压器 function
export default {
Query: {
Name: getResolver(‘name’, ‘special’)
}
}
function getResolver(n: string, type: string) {
return (parent, args, ctx) => { ... }
}
我尝试这样做,但它不起作用。
type GetResolver = <t, t1, t2>() => (parent: t...) => ...
和
type NameResolver = (t, t1, t2)=> ...
type GetResolver = (...) => NameResolver
我知道这些类型是错误的,但我不确定这里缺少什么。
我们如何为 graphql 旋转变压器函数编写类型?
工作正在进行中。 等待OP的回复。
检查下面,我仍然没有得到全貌,需要更多输入。 尽管如此,我还是根据您的评论整理了这段代码。
interface NameParent {}
interface NameArgs {}
const resolvers = {
name: {
special: function (parent: NameParent, args: NameArgs, ctx: any) {
return 'string'
},
junk: function (parent: NameParent, args: NameArgs, ctx: any) {
return 1
}
}
}
type ResolverType = keyof typeof resolvers
function getResolver<T extends ResolverType, K extends 'special' | 'junk'>(type: T, key: K) {
return resolvers[type][key]
}
const specialNameResolver = getResolver('name', 'special')
// const specialNameResolver: (parent: NameParent, args: NameArgs, ctx: any) => string
const junkNameResolver = getResolver('name', 'junk')
// const junkNameResolver: (parent: NameParent, args: NameArgs, ctx: any) => number
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.