TypeScript TS2322 错误与 TypeScript 3.8.2 相关

作者: pschoffer创建于 2020年2月23日更新于 2020年7月14日

预期结果:

在将 TypeScript 升级到 3.8.2 后,我开始收到编译错误:

TS2322: Type '({ data, loading, error }: { data: any; loading: any; error: any; }) => Element' is not assignable to type '(result: QueryResult<any, Record<string, any>>) => Element'.
  Types of parameters '__0' and 'result' are incompatible.
    Type 'QueryResult<any, Record<string, any>>' is not assignable to type '{ data: any; loading: any; error: any; }'.
      Property 'error' is optional in type 'QueryResult<any, Record<string, any>>' but required in type '{ data: any; loading: any; error: any; }'.

我还先在 Stack Overflow 上提问过。那里的好人提到 TypeScript ^3.8 更加严格,可能有某些事情可以做来使编译工作起来。以下是我在代码中的示例用法:

 <Query query={validateTokenQuery}>
                        {({ data, loading, error }) => {
            
                        }}
 </Query>

实际结果:

项目编译成功

内容来源: apollographql/react-apollo