typescript 为什么TanStackQuery的useQuery中类型收缩不起作用?

aurhwmvo  于 2022-12-27  发布在  TypeScript
关注(0)|答案(1)|浏览(172)

我想使用useQuery的isSuccess来进行类型收缩,但它似乎不起作用。

const { data, isSuccess } = useQuery(["test"], () => Promise.resolve(5));

  if (isSuccess) {
    //If you hover your mouse over the data, the type is checked as number | undefined.
    data;  
  }
nuypyhwy

nuypyhwy1#

您的代码运行良好,并且在最新版本的TypeScript(4.9)中正确地缩小了范围。
TypeScript在版本4.6中仅为结构破坏的区分联合添加了控制流分析。如果您使用的是旧版本的TypeScript,并且希望类型收缩正常工作,则不应使用结构破坏:

const query = useQuery(["test"], () => Promise.resolve(5));

if (query.isSuccess) {
  // this is now of type `number`
  query.data;  
}

相关问题