Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用await/async时,TypeScript中Axios的返回类型不正确_Typescript_Vue.js_Axios - Fatal编程技术网

使用await/async时,TypeScript中Axios的返回类型不正确

使用await/async时,TypeScript中Axios的返回类型不正确,typescript,vue.js,axios,Typescript,Vue.js,Axios,更新:这不是Axios或TypeScript的问题,而是一些奇怪的IDE配置问题。从头开始重新创建环境和.idea文件夹使其消失 在将Axios与TypeScript一起使用时,使用async/await运算符(相对于promises)似乎会使TypeScript推断的类型不正确。例如: let res = await Axios.get<Case[]>('/stack'); console.log(res); let res=wait Axios.get('/stack'); 控

更新:这不是Axios或TypeScript的问题,而是一些奇怪的IDE配置问题。从头开始重新创建环境和.idea文件夹使其消失

在将Axios与TypeScript一起使用时,使用async/await运算符(相对于promises)似乎会使TypeScript推断的类型不正确。例如:

let res = await Axios.get<Case[]>('/stack');
console.log(res);
let res=wait Axios.get('/stack');
控制台日志(res);
我希望res的返回类型为AxiosResponse 但是,TypeScript将类型推断为简单的大小写[] 通过登录控制台,我可以确认响应确实是AxiosResponse对象,其数据属性的类型为Case[]

TypeScript编译器(和IDE)将返回类型解释为一个Case对象数组

请注意,如果我使用承诺,那么行为就如预期的那样(即使用。然后和。最后,而不是等待)

更新:因此,在收到人们的评论后,我尝试重新创建项目,有趣的是,这个问题没有发生:


然而,我仍然不知道是什么让它发生在另一个项目中。注意它与IDE无关,因为它也会发生在VS代码中。我试图完全核化node_模块、包锁、节点缓存并重新安装所有东西,但这种情况仍在继续。这两个项目中的TypeScript和Axios版本都相同。

对于其他有此问题的人,我尝试了很多方法,但最终使用IDE创建的.idea目录出现了问题。我不确定具体是什么,但删除整个.idea文件夹并重新加载项目修复了所有问题。奇怪。

Per get方法确实应该返回响应对象的承诺,这就是我等待Axios.get时得到的类型。你能给我个建议吗?还要注意的是,您可能不应该在该方法之外公开传输层,即,
AxiosResponse
不应该是您代码的其他部分所知道的内容。您的代码如您所期望的那样工作。为了简单起见,对示例进行了精简。实际上,我只想检查AxiosResponse的状态代码。如果这不容易复制,那么我怀疑这是某种环境误差。我会尝试创造一个新的环境,看看。谢谢操场的例子。好的,我从头开始重新创建了这个项目,问题就解决了。太奇怪了。我将尝试找出原因,但这不是Axios或TS的问题。谢谢