解决Vue3 Typescript中类型上不存在的属性问题
P粉336536706
P粉336536706 2024-03-25 18:27:18
[Vue.js讨论组]

我正在尝试用来自 API 的线索填充组件。我有一个 LeadService 文件以及我的 vue 模板文件。我遇到的问题是,我在模板文件上使用异步调用,该调用有效,但是当我去计算值时,它会抛出 property does not exit on type 错误。它实际上有效,您可以看到错误消息后面的正确组件。我不知道如何让错误消失。

这里是服务类LeadService.ts

import ApiService from "@/core/services/ApiService";

interface Lead {
  id: string;
  first_name: string;
  last_name: string;
  lead_form_name: string;
  email: string;
  campaign: string;
  timestamp: number;
  mobile_number: string;
  message: string;
  medium: string;
  city: string;
  state: string;
  leadType: string;
  quality: string;
  source: string;
  call_link: string;
  company: string;
  country: string;
}

export default class LeadService {

  getLeads() {

    const accountInfo = JSON.parse(localStorage.getItem('accountInfo') || '{}');

    ApiService.setHeader();

    return ApiService.query("/leads", {params: {client_id : accountInfo.client_id}})
      .then(({ data }) => {
        let leadData: Lead[] = data['Items'];
        return leadData;
      })
      .catch(({ response }) => {
        return response;
      });

  }
}

这是我的 vue 模板 Leads.vue





问题始于我的计算函数,我开始过滤 this.LeadData 基本上每个过滤器都会抛出 Property does not exit on type 错误,但它们确实存在。

需要注意的是,当 this.leadData 被设置时,它是一个代理。 任何帮助将不胜感激,我想知道是否可以抑制错误,尽管我不喜欢这个解决方案。

例如,在计算方法中的第一个过滤器中

// Get the total number of Paid Media leads
      const totalPaid = this.leadData.filter(
        lead => lead.medium == "paid_media"
      ).length;

mediumleadData 的一个属性,我实际上可以控制台记录它并且它工作得很好,但它仍然总是抛出 property does not exit on type

P粉336536706
P粉336536706

全部回复(1)
P粉111627787

leadData 的类型是从 data() 中的声明推断出来的。它被初始化为 {},这意味着它的类型是一个不可变的空对象(并且不能附加任何属性)。但是,leadData 最终被分配了 LeadService().getLeads() 的返回值,所以它的类型实际上应该是 Lead 对象的数组。

要正确输入 leadData,请使用 Lead[] 的类型断言:

export default defineComponent({
  data() {
    return {
      //leadData: {}, ❌
      leadData: [] as Lead[], ✅
    }
  }
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号