useAsync中Run函数参数中Promise的类型问题
来源:7-2 用高级 Hook-useAsync统一处理Loading和Error状态

Bokk
2021-01-28
Nolan你好,
我在尝试自己实现的简化版useAync中遇到一个ts的类型问题,请求解答
我的useAsync实现如下
export const useAsync = () => {
const [value, setValue] = useState(null);
...
const run = (promises: Promise<typeof value>) => {
...
};
...
};
在调用run函数时候,传入Promise<String> 类型,这样就会报错
Argument of type ‘Promise<string>’ is not assignable to parameter of type ‘Promise<null>’.
这是因为run中Promise是 <typeof value> 的类型,而value的初始值就是null导致的
请问有没有别的解法方法既可以限制Promise的类型跟value类型一致,又不是null类型呢?
这是我codesandbox中全部的实现的链接
写回答
1回答
-
Nolan
2021-01-28
实现这种效果只能用泛型,因为没法在定义useAsync的时候知道value到底是什么类型
032021-02-02
相似问题