用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` 的类型为你期望的初始值对象的类型。这种方式更明确,但会稍微增加一些代码量。
00
相似问题