TypeScript中类内引用类时如何解决leadService未定义报错?
问题原因
你遇到的错误是因为GpbApi类中仅通过leadService!: typeof leadService做了TypeScript类型断言,没有实际给该属性赋值,导致运行时gpbApi.leadService为undefined,自然无法调用getReqtypes方法。
修复方案
以下几种方式都可以解决这个问题:
方案1:在构造函数中赋值
修改gpbApi.ts代码:
import leadService from '@/utils/api/leadService'; class GpbApi { leadService: typeof leadService; constructor() { // 给类属性赋值导入的leadService实例 this.leadService = leadService; } } const instance = new GpbApi(); export default instance;
方案2:直接在属性声明时初始化
简化类的写法,直接在属性声明时完成赋值:
import leadService from '@/utils/api/leadService'; class GpbApi { // 同时完成类型声明和赋值 leadService: typeof leadService = leadService; } const instance = new GpbApi(); export default instance;
方案3:放弃类结构,直接导出对象
如果不需要类的其他特性,可以直接导出包含服务实例的对象,更简洁:
import leadService from '@/utils/api/leadService'; // 直接创建并导出API对象 const gpbApi = { leadService }; export default gpbApi;
额外验证
修复后可以在created钩子中先打印gpbApi.leadService,确认其不再是undefined,再调用getReqtypes方法。
内容的提问来源于stack exchange,提问作者tesicg
相关产品推荐
相关产品推荐

