我gatsby-plugin-ts
用来为我的 graphql 页面查询生成类型。
我遇到的问题是生成的所有类型都T | undefined
为所有字段返回一个类型,所以我需要在任何组件中使用它们之前检查所有查询子字段,否则编译器会抛出错误。
举个gatsby-plugin-image
例子。给定一个查询:
export const query = graphql`
query IndexPage {
banner: file(relativePath: { eq: "banner.jpg" }) {
childImageSharp {
gatsbyImageData(width: 1920)
}
}
}
`;
结果data.banner
应该传递给getImage
函数,但如果您尝试这样做,打字稿可以理解地抛出以下错误,因为 undefined 不能分配给IGAtsbyImageData
预期的getImage
当涉及到更复杂的查询时,情况就更糟了,比如来自 markdownremark 插件的查询:每次都需要手动检查一个查询结果的所有子字段。有解决办法吗?