6、用Promise进行网络请求,接口返回的典型数据为 {code: 200, data: []},请对new Promise(...)获取到的结果进行类型约束
时间: 2024-05-08 08:15:32 浏览: 123
可以使用TypeScript中的interface来对获取到的结果进行类型约束,如下所示:
```typescript
interface ResponseData<T> {
code: number;
data: T;
}
function fetchData<T>(url: string): Promise<ResponseData<T>> {
return new Promise<ResponseData<T>>((resolve, reject) => {
fetch(url)
.then(res => res.json())
.then(data => resolve(data))
.catch(error => reject(error));
});
}
```
在上述代码中,定义了一个泛型接口ResponseData,它包含了code和data两个属性,并且data的类型为泛型参数T。fetchData函数的返回值是一个Promise,它的类型为ResponseData<T>,即请求成功后返回的数据包含了code和data两个属性,其中data的类型为泛型参数T。
使用时,可以先定义一个数据类型,然后在调用fetchData函数时传入该数据类型,如下所示:
```typescript
interface User {
name: string;
age: number;
}
fetchData<User>('http://example.com/api/users')
.then(response => {
const users = response.data;
// do something with users
})
.catch(error => {
console.error(error);
});
```
在上述代码中,调用了fetchData函数,并传入了User类型作为泛型参数。fetchData函数返回的Promise的类型为ResponseData<User>,即请求成功后返回的数据包含了code和data两个属性,其中data的类型为User。在then回调函数中,可以通过response.data获取到接口返回的用户数据,并进行相应的处理。如果请求失败,则会执行catch回调函数,打印出错误信息。
阅读全文