You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript使用Apollo useQuery赋值常量时报Vetur(2571)未知类型错误如何解决

解决方法
  • 第一步:先定义GraphQL查询返回结果和单个资源的TS类型,根据你实际的业务字段调整即可:
// 单个资源的类型定义
interface Resource {
  id: string;
  // 补充你业务中资源的其他字段,比如名称、链接、创建时间等
  name: string;
  url: string;
  createAt: string;
}

// GET_RESOURCES 查询返回的整体结构
interface GetResourcesRes {
  resources: Resource[];
}

// 查询入参的类型定义
interface GetResourcesParams {
  limit: number;
}
  • 第二步:给useQuery传入泛型参数,绑定返回值和入参的类型:
const {
  result: fetchedResources,
  loading: fetchResourcesLoading,
  refetch: fetchResources,
  onError: apiError
// 按顺序传入返回值类型、入参类型
} = useQuery<GetResourcesRes, GetResourcesParams>(GET_RESOURCES, { limit: numberOfResults.value })
  • 第三步:模板中增加非空判断,避免加载阶段返回空值导致的运行时错误:
<!-- 先判断加载完成且返回数据存在再渲染列表 -->
<template v-if="!fetchResourcesLoading && fetchedResources?.resources">
  <router-link
    v-for="resource in fetchedResources.resources"
    :key="resource.id"
    class="resource q-mb-md items-center text-black"
    tag="div"
  >
...
  </router-link>
</template>

如果项目中GraphQL查询较多,也可以接入自动类型生成工具,根据服务端Schema直接生成所有查询对应的TS类型,不需要手动编写。

内容的提问来源于stack exchange,提问作者Maggie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:39:04