【发布时间】:2022-01-22 03:56:44
【问题描述】:
如何从嵌套对象中获取类型定义?
在这个例子中,我得到一个实体(产品)列表,我如何访问实体(节点)的类型定义。
这是使用relay-compiler编译的
export type ProductAutoSuggestQueryResponse = {
node: {
products?: {
edges: ReadonlyArray<{
node: {
name: string;
id: string;
currencies: ReadonlyArray<string> | null;
};
} | null> | null;
} | undefined;
} | null;
};
我尝试过使用Pick<>,但它似乎变得非常复杂,并且数组导致了我的问题。
【问题讨论】:
-
你有两个名为
node的属性,你想退出什么类型的? Is this what you want?。您需要将其推广到何种程度?还有其他我们需要关注的用例或边缘情况吗? -
您可以编写一个递归类型函数来执行像this 这样的“不可为空的深度索引”,如果这是您想要的。告诉我。
-
@jcalz 在这种情况下,我试图获取第二个节点,但我有不同的查询,因此节点可能位于不同的深度。您发布的第二条评论看起来很棒。我假设我必须在到达数组时将
number放入路径中? -
是的,要获取数组的元素类型,您可以使用
number类型的索引对数组进行索引;这就像对对象进行索引以获取属性(因为数组只是对象)。如果一切都满足您的需求,我会写一个答案来解释这一点。 (顺便说一句,可能是一两个小时后) -
是的,这完全是我想要的!不急。非常感谢
标签: typescript graphql relay