#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"]
это .
Как я могу получить доступ к глубоко вложенным свойствам внутри этого типа?