我正在使用带有打字稿的graphql并做出反应,并且我无法弄清楚如何在不出现tslint错误no-object-literal-type-assertion
的情况下对对象进行解构。我可以停用该错误,但是我有充分的理由这么做,然后再将其关闭...
graphql查询在几乎每个嵌套级别上都可以为空。所以当我用apollo自动生成类型定义时,我得到以下界面...
export interface TipsPageQuery {
content: TipsPageQuery_content | null;
toc: TipsPageQuery_toc | null;
}
export interface TipsPageQuery_content {
__typename: "Mdx";
code: TipsPageQuery_content_code | null;
excerpt: string | null;
frontmatter: TipsPageQuery_content_frontmatter | null;
}
然后我用来在组件中进行分解的代码就是这样...
const DocPage = ({ data, pageContext, location, classes }: DocPageProps) => {
const { content, toc }: TipsPageQuery = data;
const { code }: typeof content = content;
,我得到错误Property 'code' does not exist on type 'TipsPageQuery_content | null
。我可以这样破坏,但是随后我从tslint收到关于object-literal-type-assertion
...
const { code } = content || {} as keyof typeof content