我得到一个嵌套对象作为GraphQL查询的结果,查询名称作为第一级键,实际数据在第二级:
{
getProduct: {
id: "1",
name: "test",
}
}
在我的查询函数中,我自动提取对象的第一个键并返回getProduct
的值。然而,我想推断第一个键的类型作为查询函数的返回值。
type QueryReturn = FirstElement<GetProductQuery>; // should be { id: string; name: string }
我在互联网上找到的所有解决方案都推断数组或函数的头部或尾部。
3条答案
按热度按时间oaxa6hgo1#
有点晚了。如果你能确保你总是在最外面的类型中有一个键,你可以通过使用
keyof
操作符和索引访问类型来做到这一点。如果在最外层的类型中没有键或有多个键,这将表现得很奇怪,所以请确保在所有场景中始终有一个键。
示例:
Playground链接
57hvy0tb2#
我有点迟到了,但我看到你在使用graphql-codegen。我有一个类似的问题,我解决了:
TypeScript playground示例。
xzlaal3s3#
我是否正确地理解了您只想获得中间没有
getProduct
别名的产品类型?我有预感,这个额外的级别是因为你在别名你的查询。无论如何,在一个对象中没有第一个键。向下钻取的方法是指定键。这一切都可以通过像graphql-autogen这样的工具自动生成类型来变得容易得多。