【问题标题】:Typescript and GraphQL mismatch types between graphql response and typescript typegraphql 响应和 typescript 类型之间的 Typescript 和 GraphQL 不匹配类型
【发布时间】:2020-08-10 02:02:17
【问题描述】:

我正在使用 typescriptreact-apolloAWS Appsync 来构建我正在构建的 react 应用程序,但遇到了打字稿警告,我不确定我哪里出错了。

我的 graphql 架构看起来像 -

schema {
    query: Query
}

type Query {
    events: [Event]
}

type Event {
   ...
}

我正在使用useQuery 返回所有事件,例如 -

const {
   loading: eventsListLoading,
   error: eventsListError,
   data: eventsListData
} = useQuery(EVENTS_LIST_HOME);

EVENTS_LIST_HOME 来自 -

export const EVENTS_LIST_HOME = gql`
    query eventsListHome{
        events {
            title
        }
    }
`;

我正在尝试渲染这些项目 -

<table>
   {
      eventsListData.events.map((event: IEvent) => (
         <tr>
             <td>{event.title}</td>
         </tr>
      ))
   }
</table>

我有一个打字稿界面IEvent

export default interface IEvent {
    title: string;
}

但我得到了错误 -

我尝试将 typescript 类型重命名为 Event 而不是 IEvent 并添加其他参数、索引和数组,即使它们没有被使用,但同样的错误

我错过了什么?如何在 typescript 中使用 Event 的 grapghql 类型?

【问题讨论】:

  • 你如何生成你的打字稿类型? TypeScript 具有结构化类型,这意味着类型形状需要兼容——名称无关紧要。最简单的事情可能是简单地省略注释。类型似乎是推断出来的。
  • @Herku 我目前不生成它们。我是手动做的。我应该生成它们吗?不幸的是,当我在 map 回调中省略类型时,我没有在我的 IDE 中获得任何智能感知 event

标签: typescript graphql


【解决方案1】:

您应该使用 apollo codegen 为您的 graphql 架构中声明的类型生成 TypeScript 类型 - https://github.com/apollographql/apollo-tooling#apollo-clientcodegen-output

EventIEvent 之间似乎存在类型不匹配。没看到Event的定义就不能多说。

使用apollo codegen 生成的类型应该可以修复类型错误。

【讨论】:

猜你喜欢
  • 2021-09-24
  • 2022-11-23
  • 2020-12-11
  • 2021-09-10
  • 2019-05-14
  • 2022-01-06
  • 2019-11-12
  • 2021-06-30
  • 1970-01-01
相关资源
最近更新 更多