Опитвам се да накарам useQuery
hook да работи с TypeScript.
Ето моето запитване
export const FETCH_LINKS = gql`
query FetchLinks {
feed {
links {
id
createdAt
url
description
}
}
}
`;
Генерирах типовете от GraphQL схема с graphql-codegen
export type Feed = {
__typename?: 'Feed';
links: Array<Link>;
count: Scalars['Int'];
};
export type Link = {
__typename?: 'Link';
id: Scalars['ID'];
createdAt: Scalars['DateTime'];
description: Scalars['String'];
url: Scalars['String'];
postedBy?: Maybe<User>;
votes: Array<Vote>;
};
В моя компонент прилагам типа към useQuery
кука
const { data, loading, error } = useQuery<Feed>(FETCH_LINKS);
Проблемът е, че в променливата data
получавам обект със следната форма:
{
feed: {
__typename
links
count
}
}
И така, за да премина през масива от връзки и да ги изобразя на страницата, трябва да направя data.feed.links.map()
, но типът Feed
няма свойство feed
върху него и следователно получавам съобщение за грешка Property 'feed' does not exist on type 'Feed'
Как да коригирам това несъответствие
graphql-codegen
, но не изглежда като правилен начин да го направите - person Aleksandr Fomin   schedule 29.06.2020useQuery<{ feed: Feed }>
- person Nikita Madeev   schedule 29.06.2020