当通过 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
消除此错误,因此这对我来说不是可行的解决方案。我们的目标是坚持严格的打字。
提前感谢您的任何见解。