fetch+typescript 封装
时间: 2023-07-25 17:34:24 浏览: 163
下面是一个使用Typescript对fetch进行封装的例子:
```typescript
interface ApiOptions {
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS';
headers?: HeadersInit;
body?: BodyInit;
credentials?: RequestCredentials;
mode?: RequestMode;
cache?: RequestCache;
}
interface ApiResponse<T = any> {
code: number;
message: string;
data: T;
}
async function fetchApi<T>(url: string, options: ApiOptions = {}): Promise<ApiResponse<T>> {
const response = await fetch(url, options);
const responseData = await response.json();
if (!response.ok) {
throw new Error(responseData.message || '请求失败');
}
return responseData;
}
```
在这个例子中,我们使用了Typescript来定义了ApiOptions和ApiResponse两个接口。ApiOptions接口用于定义fetch的参数,ApiResponse接口用于定义返回的数据结构,其中code表示返回状态码,message表示返回消息,data表示返回的数据。
fetchApi函数接受一个url和一个options对象作为参数,它返回一个Promise对象,Promise的泛型为ApiResponse<T>,其中T表示返回的数据类型。在内部,它使用了await关键字来等待fetch函数的响应结果,并使用了await关键字来等待响应体的json解析结果。
如果响应状态码不是200,它将抛出一个错误。如果发生任何其他错误,它将抛出一个带有默认消息的错误。你可以根据你的需求进行更改和修改。
阅读全文