Я все еще относительно новичок в typeScript и немного борюсь с аннотациями в проекте, над которым я работаю с различными данными из конечной точки GraphQL.
Структура данных может измениться позже, поэтому я использовал Apollo Client для создания соответствующих типов TypeScript для различных запросов, чтобы не вводить их вручную. Это работает хорошо: Пока все хорошо!
Однако, когда я хочу отобразить различные данные, у меня возникают проблемы: в основном, когда я использую функцию map() и начинаю деструктурировать данные, мне трудно найти примеры того, как это сделать? Я не уверен, сталкиваюсь ли я с конфликтами имен? Различные ошибки мне непонятны.
Пример: (это фрагмент более крупного блока кода — если я наведу указатель мыши на seoDataObject, я увижу, что он правильно аннотирован, как и ожидалось — это массив объектов:
const seoDataObject: (AllUsersSeo_users_edges | null)[] | ноль | неопределенный)
interface AllUsersSeo_users_edges {
__typename: "RootQueryToUserConnectionEdge";
/**
* The item at the end of the edge
*/
node: AllUsersSeo_users_edges_node | null;
}
const seo = seoDataObject?.map(({ node }) => node).find((node) => node.id === id)?.seo;
Затем я получаю следующую ошибку:
var node: any
Property 'node' does not exist on type 'AllUsersSeo_users_edges | null'.ts(2339)
Как бы я переписал это, используя машинописный текст?
«узел» существует для каждого объекта seoDataObject, но во фрагменте кода «узел» также является параметром функции карты, поэтому я просто не могу понять, как правильно это сделать в Typescript?