用useAsync()时候如何传递类型?

来源:5-13 自定义hooks-useAsync 实现请求处理-02

秋得法

2024-03-21

用useAsync()的时候const { data, pending } = useAsync(fetchMePageData, {
cards: [],
superCard: {} as ISuperCard,
})这种方式传递T吗?可以的话为什么可以,还有其他方式吗?

写回答

1回答

秋得法

提问者

2024-03-21

在使用 `useAsync` 函数时,可以通过泛型参数 `T` 来指定数据的类型。

你使用了 `fetchMePageData` 函数作为异步操作的执行函数,

并且传递了一个初始值对象 `{ cards: [], superCard: {} as ISuperCard }` 作为初始化时的值。

在这种情况下,`T` 的类型会根据传入的初始值的类型进行推断。

因此,`T` 的类型将被推断为初始值对象的类型,也就是 `{ cards: [], superCard: {} as ISuperCard }` 的类型。

通过这种方式,可以在调用 `useAsync` 函数时直接指定初始值的类型,而不需要显式地指定泛型参数 `T`。

这种方式使代码更简洁,而且能够正确地推断数据的类型。

如果不想依赖类型推断,也可以显式地传递泛型参数 `T`,像这样:

```typescript
const { data, pending } = useAsync<{ cards: Card[], superCard: ISuperCard }>(fetchMePageData, {
  cards: [],
  superCard: {} as ISuperCard,
})
```

在这种情况下,需要显式地指定 `T` 的类型为你期望的初始值对象的类型。这种方式更明确,但会稍微增加一些代码量。


0
0

Vue3+Pinia+Vite+TS 还原高性能外卖APP项目

Vue3+Pinia+Vite+TS 还原高性能外卖APP项目

392 学习 · 251 问题

查看课程