猿问

有没有人遇到过这个问题哈!typescript报错,类型{}不存在属性,这是为什么?各位有什么建议?

在调取api的时候不知道为什么一直报错无法获取到对应的方法,代码如下
///apis/index.ts
letapis={};
constapiContext=require.context("./",true,/\.ts$/);
apiContext.keys().forEach(api=>{
if(api.startsWith("./index"))return;
constapiModule=apiContext(api);
apis={...apis,...(apiModule.default||apiModule)};
});
exportdefaultapis;
///store/modules/side.ts
@Module
exportdefaultclassAsideextendsVuexModule{
menuList=[];
@Mutation
[GET_MENU_LIST](payload:any):void{
this.menuList=payload;
}
@Action({commit:GET_MENU_LIST})
asyncgetMenuList(){
returnawaitapis.getMenuList();
}
}
就是这行apis.getMenuList()报错,Member'getMenuList'implicitlyhasan'any'type,vscode提示类型“{}”上不存在属性“getMenuList”。我打印了下apis.getMenuList是个function用来获取接口数据没看出啥问题
茅侃侃
浏览 769回答 2
2回答

婷婷同学_

你这也压根没声明啊……既然用了TS就按TS的要求来,咋还TS还原生JS混用呢?简单粗暴的方法就是忽略这个错误,在tsconfig.json里:{..."compilerOptions":{..."noImplicitAny":false,//设成false}...}

凤凰求蛊

因为你在最开始定义了letapis={};,ts会自动识别你的apis是一个空的object,并且没有任何东西。所以你在后面想要调用getMenuList的时候TS认为apis里面并不存在你要调用的方法。对于这种动态object,解决办法是手动声明类型letapis:{getMenuList?:Function}={};,在调用的时候用if检查getMenuList是否存在
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答