[英]Access multiple nested TypeScript type generated from GraphQL
I need to access only the "departments" type in this large type generated from GraphQL:我只需要访问从 GraphQL 生成的这种大型类型中的“部门”类型:
export type GetCompanyChartQuery = (
{ __typename?: 'Query' }
& { generateOrgChart?: Maybe<(
{ __typename?: 'DepartmentNode' }
& Pick<DepartmentNode, 'name'>
& { manager?: Maybe<(
{ __typename?: 'EmployeeNode' }
& Pick<EmployeeNode, 'name' | 'mobilePhone'>
)>, departments?: Maybe<Array<Maybe<(
{ __typename?: 'DepartmentNode' }
& Pick<DepartmentNode, 'name' | 'depth'>
& { manager?: Maybe<(
{ __typename?: 'EmployeeNode' }
& Pick<EmployeeNode, 'name'>
)>, employees?: Maybe<Array<Maybe<(
{ __typename?: 'EmployeeNode' }
& Pick<EmployeeNode, 'imageUrl' | 'mobilePhone' | 'name' | 'position' | 'title' | 'depth'>
)>>>, departments?: Maybe<Array<Maybe<(
{ __typename?: 'DepartmentNode' }
& Pick<DepartmentNode, 'name' | 'depth'>
& { manager?: Maybe<(
{ __typename?: 'EmployeeNode' }
& Pick<EmployeeNode, 'name'>
)>, employees?: Maybe<Array<Maybe<(
{ __typename?: 'EmployeeNode' }
& Pick<EmployeeNode, 'imageUrl' | 'mobilePhone' | 'name' | 'position' | 'title' | 'depth'>
)>>> }
)>>> }
)>>> }
)> }
);
I cannot find a way around this.我找不到解决办法。 Pick<GetCompanyChartQuery, 'subType'> or GetCompanyChartQuery['subtype'] wont do the trick here.
Pick<GetCompanyChartQuery, 'subType'> 或 GetCompanyChartQuery['subtype'] 不会在这里解决问题。
I am trying to fetch data with a GraphQL query and put the response in a state like this:我正在尝试使用 GraphQL 查询获取数据,并将响应放入 state 中,如下所示:
const [departments, setDepartments] = useState<TheTypeINeedToAccess>();
setDepartments(data?.generateOrgChart?.departments);
But to do this I need the correct type.但要做到这一点,我需要正确的类型。
Thanks in advance.提前致谢。
I think the issue with picking the subtypes is the optional properties.我认为选择子类型的问题是可选属性。 If you make the object non-nullish, TypeScript can pick out the subtype.
如果您使 object 非无效,则 TypeScript 可以挑选出子类型。
type Departments = Required<GetCompanyChartQuery>["generateOrgChart"]["departments"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.