简体   繁体   English

访问从 GraphQL 生成的多个嵌套 TypeScript 类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM