代码之家  ›  专栏  ›  技术社区  ›  user824624

类型“unknown”不可分配给vue3中的类型“any[]”

  •  0
  • user824624  · 技术社区  · 1 周前

    在vue3的代码中

    const jobs = ref([]);
    
    async function getQueueJobs(status: string) {
      let result = await request({
        url: '/api/v1/jobs',
        method: 'get',
        headers: { 'Content-Type': 'application/json' },
      });
      jobs.value = result['data'];
      console.log('......', jobs.value);
    }
    

    编译时出错说

    类型“unknown”不可分配给类型“any[]”。

    尝试过

    const jobs = ref(any[]);
    

    编译时出错说

    元素访问表达式应包含一个参数。

    如何处理这个编译问题?

    1 回复  |  直到 1 周前
        1
  •  2
  •   Phil    1 周前

    理想情况下,您将为Ref和结果添加适当的类型 data 属性。

    裁判很简单(假设有 Job 类型定义)

    const jobs = ref<Job[]>([]);
    

    看见 https://vuejs.org/guide/typescript/composition-api#typing-ref

    键入结果 数据 取决于什么 request() 是,但由于它默认为 unknown ,你可以简单地铸造它

    jobs.value = result.data as Job[];
    

    假设 要求 axios() (它具有所有特征),您可以通过提供通用覆盖来轻松地键入响应数据。

    此外,GET是默认的,这样的请求没有正文,因此不需要内容类型的头

    jobs.value = (await request<Job[]>('/api/v1/jobs')).data;