typescript - 输入 graphql 解析器函数
问题描述
查看了有关如何为柯里化函数编写类型的示例,但我仍然无法将两者联系起来。
这是我的解析器的功能
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
推荐阅读
- c++ - 防止返回时复制对象
- json - 使用 PostgreSQL 分析和格式化 JSON
- fasm - fasmg:无法执行二进制文件:执行格式错误
- reactjs - 在 headerFilter 中反应制表符选择
- css - 隐藏和显示 SVG 与 useState 反应没有功能
- r - 不要缩进新部分的第一段
- assembly - Visual Studio 2019 - MASM - 32 位程序集 - Hello World
- hyperledger-fabric - 错误:获取链码字节时出错:列出包的依赖项 ../asset-transfer-basic/chaincode-go/ 失败:退出状态 2
- sql-server - 如何记录 Azure SQL 数据库中的所有查询事件
- python - 在 Python 中将数值数据转换为分类数据