能支持ts的fetch封装组件
时间: 2023-08-26 13:50:58 浏览: 93
您好!对于支持 TypeScript 的 Fetch 封装组件,您可以考虑使用第三方库如 Axios 或是自己实现一个封装组件。下面是一个简单的示例:
```typescript
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
interface ApiResponse<T> {
code: number;
data: T;
message: string;
}
class ApiClient {
private baseUrl: string;
constructor(baseUrl: string) {
this.baseUrl = baseUrl;
}
public async get<T>(url: string, config?: AxiosRequestConfig): Promise<T> {
const response = await axios.get<ApiResponse<T>>(`${this.baseUrl}${url}`, config);
return response.data.data;
}
public async post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T> {
const response = await axios.post<ApiResponse<T>>(`${this.baseUrl}${url}`, data, config);
return response.data.data;
}
// 其他 HTTP 方法的封装,如 put、delete 等
// 可以根据需要添加其他功能,如错误处理、拦截器等
}
const apiClient = new ApiClient('https://api.example.com');
// 使用示例
apiClient.get<User[]>('/users')
.then((users) => {
console.log(users);
})
.catch((error) => {
console.error(error);
});
```
在这个示例中,我们使用了 Axios 库来发送网络请求,并通过 TypeScript 的泛型来指定返回数据的类型。封装的 ApiClient 类提供了一些常用的 HTTP 方法(例如 get、post),您可以根据需要添加其他方法和功能。
当然,您也可以根据自己的需求自行实现一个类似的封装组件,这只是一个简单的示例供参考。希望能对您有所帮助!如果您还有其他问题,请随时提问。
阅读全文