我正在使用Apollo Client,正在学习打字稿。我有一个0.00032850727438929998173
组件和这个更新道具:
Mutation
我遇到两个编译错误:
(cache, { data: { createTask } }) => {
const allTasks = cache.readQuery({ query: ALL_TASKS }).allTasks;
}
我了解一般想法。 Object is possibly 'null'.
Property 'allTasks' does not exist on type '{}'.
可能会返回readQuery
(这很令人困惑,因为文档使我相信,未找到任何结果时会引发错误(https://www.apollographql.com/docs/react/advanced/caching.html#readquery)。
如何使编译器从null
的结果中读取属性allTasks
?
此外,仅供参考,我尝试运行readQuery
,并确认其中确实存在有效的数据,并且具有一个名为的属性。
答案 0 :(得分:3)
readQuery
接受类型参数作为结果的类型;您可以查看此in the source code或通过在IDE中跳转到readQuery
的声明。因此,您可以执行以下操作:
interface AllTasksResult {
allTasks: any; // TODO: Put correct type here
}
// ...
const allTasks = cache.readQuery<AllTasksResult>({ query: ALL_TASKS })!.allTasks;
关于null
:考虑为类型声明和文档之间的不一致提交错误。目前,感叹号声称您知道前面的表达式(返回值readQuery
)不会为null或未定义。