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

mkh04yzy  于 2021-09-13  发布在  Java
关注(0)|答案(2)|浏览(266)

我正在尝试为api请求编写axios服务,但在理解此错误时遇到问题:
类型“axiosresponse<user[]>”缺少类型“user[]”中的以下属性:长度、弹出、推送、concat和其他26个。ts(2740)常量响应:axiosresponse<user[]>
我的代码如下所示:

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;
}

当然,我并不理解一些基本的打字脚本概念。你能帮我吗?
如果响应将被 Package 在“数据”权限中,那么应该如何做?

2fjabf4q

2fjabf4q1#

您缺少的是axios的功能(例如 get )归还 AxiosInstance 而不是你期望的实际对象。您应该访问 data 财产 AxiosInstance 要获得您期望的值,请执行以下操作:

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

3phpmpom2#

你应该把钱还给我 res.data 对于 http.get() 方法,请参阅响应模式

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;
}

打字游戏场

相关问题