首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在axios请求中为对象数组设置适当的类型?

如何在axios请求中为对象数组设置适当的类型?
EN

Stack Overflow用户
提问于 2021-07-12 10:45:51
回答 2查看 593关注 0票数 0

我试图为api请求编写一个axios服务,并且我在理解这个错误时遇到了问题:

类型' AxiosResponse‘缺少’User[]‘中的以下属性: length、pop、push、const和26 more.ts(2740) const response: AxiosResponse

我的代码是这样的:

代码语言:javascript
运行
复制
import axios from 'axios';
import User from 'src/models/User';

const http = axios.create({
  baseURL: process.env.API,
  headers: { 'Content-Type': 'application/json' },
});

export async function getAllUsers(): Promise<User[]> {
  const response = await http.get<User[]>('users/');
  return response;
}

export async function getSingleUser(itemId: string): Promise<User> {
  const response = await http.get<User>(`/${itemId}`);
  return response;
}

当然,我不会理解一些基本的打字概念。你能帮我吗?

如果响应将被包装在'data‘poperty中,该如何完成?

EN

回答 2

Stack Overflow用户

发布于 2021-07-12 12:03:23

您所缺少的事实是axios函数(如get)返回一个AxiosInstance,而不是您期望的实际对象。您应该访问AxiosInstanceAxiosInstance属性以获得所期望的值:

代码语言:javascript
运行
复制
export async function getAllUsers(): Promise<User[]> {
  const response = await http.get<User[]>('users/');
  return response.data;
}
票数 1
EN

Stack Overflow用户

发布于 2021-07-12 12:02:35

您应该返回res.data for http.get()方法,请参阅响应模式

代码语言:javascript
运行
复制
import axios from 'axios';

interface User {}

const http = axios.create({
  baseURL: process.env.API,
  headers: { 'Content-Type': 'application/json' },
});

export async function getAllUsers(): Promise<User[]> {
  const response = await http.get<User[]>('users/').then(res => res.data)
  return response;
}

export async function getSingleUser(itemId: string): Promise<User> {
  const response = await http.get<User>(`/${itemId}`);
  return response;
}

TypeScript游乐场

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68345994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档