1

当通过 GraphQL 拉取 WordPress 页面数据及其子页面数据时,此错误发生在 Gatsby + WordPress + TypeScript 项目组件中。

类型“WpContentNode[]”不可分配给类型“WpPage[]”。

在线的:

const pages: WpPage[] = page?.wpChildren?.nodes;

正在从页面组件中的 GraphQL 查询中获取数据:

query {
  allWpPage(filter: { databaseId: { eq: 383 } }) {
    nodes {
      ...standardPageFields
      wpChildren {
        nodes {
          ... on WpPage {
            id
            uri
            title
            ...etc
          }
        }
      }
    }
  }
}

这部分查询似乎与生成的 TypeScript 接口没有很好的结合:

wpChildren {
  nodes {
    ... on WpPage {
      id
      ...
    }
  }
}

wpChildren.nodes即使WpContentNode[]它是从... on WpPage. 我认为它将作为查询内的WpPage[]结果输入... on WpPage

这些类型定义都是用graphql-codegen. 大多数工作正常。只有将适当的类型与... on WpPage查询匹配时才会遇到这个问题。

我怎样才能wpChildren.nodes打字WpPage[]?它们是父节点的子页面。

注意:我们避免使用 来any消除此错误,因此这对我来说不是可行的解决方案。我们的目标是坚持严格的打字。

提前感谢您的任何见解。

4

0 回答 0