Доступ к определениям автогенерированных машинописных текстов graphql-codegen/typescript

#javascript #typescript #graphql

Вопрос:

Изменить: Это рассматриваемая библиотека, и документация по этому вопросу скудна — https://github.com/dotansimha/graphql-code-generator Тем не менее, я обнаружил эту проблему: https://github.com/dotansimha/graphql-code-generator/issues/3084

Я использую graphql-codegen/typescript, и он использует запросы в проекте для автоматического создания определений машинописного текста. Я использую эти определения во всем своем проекте. Я нахожу это эффективным, потому что мне не нужно беспокоиться о ручном изменении типов при изменении моих запросов (не уверен, что это хорошая/плохая практика). Я пытаюсь получить доступ к объекту внутри одного из этих автоматически сгенерированных определений машинописного текста..

Вот что выплевывает автогенератор:

 export type MenuQuery = (
  { __typename?: 'Query' }
  amp; { vendorDetails: (
    { __typename?: 'Vendor' }
    amp; Pick<Vendor, 'id' | 'name' | 'imageUrl' | 'expensive' | 'location' | 'venueId'>
  ), menuCategories: Array<(
    { __typename?: 'MenuCategory' }
    amp; Pick<MenuCategory, 'id' | 'displayName' | 'imageIcon' | 'level' | 'parentCategoryId' | 'sortOrder'>
    amp; { image?: Maybe<(
      { __typename?: 'Image' }
      amp; Pick<Image, 'image' | 'imageFullRes'>
    )>, subCategories: Array<(
      { __typename?: 'MenuCategory' }
      amp; Pick<MenuCategory, 'displayName' | 'id' | 'parentCategoryId' | 'level'>
      amp; { items: Array<(
        { __typename?: 'MenuItem' }
        amp; Pick<MenuItem, 'id' | 'name' | 'originalCost' | 'posCategoryIds'>
        amp; { images?: Maybe<Array<Maybe<(
          { __typename?: 'Image' }
          amp; Pick<Image, 'image'>
        )>>> }
      )> }
    )>, items: Array<(
      { __typename?: 'MenuItem' }
      amp; Pick<MenuItem, 'id' | 'name' | 'isAlcohol' | 'originalCost' | 'description' | 'posCategoryIds'>
      amp; { images?: Maybe<Array<Maybe<(
        { __typename?: 'Image' }
        amp; Pick<Image, 'image' | 'imageFullRes'>
      )>>> }
    )> }
  )> }
); 

Скелет ответа выглядит примерно так:

 "menuCategories": [
  {
    "id": "1153",
    "displayName": "Bakery",
    "image": null,
    "imageIcon": "",
    "subCategories": [],
    "items": [
      {
        "id": "293585",
        "name": "Almond Croissant",
        "isAlcohol": false,
        "originalCost": 3.85,
        "description": "Toasted almonds, frangipane in a flaky, buttery croissant.",
        "images": [],
        "posCategoryIds": [
            "1153"
        ]
      }, // <-- Trying to access this "item" object
      // ...more items
    ]
  }
[ 

I am trying to to access:

amp; Pick<MenuItem, 'id' | 'name' | 'originalCost' | 'posCategoryIds'>

Например, если я хочу получить доступ к menuCategories массиву, я могу импортировать тип и сделать MenuQuery["menuCategories"] это .

Как я могу получить доступ к глубоко вложенным свойствам внутри этого типа?