我有一个从库中定义的函数。
export declare const getUser: (id: string) => Promise<User>;
我正在尝试了解诺言所能解决的问题。
我能够做到以下几点:
const fetchUserSuccess = createAction(
'users/GET_ONE_SUCCESS',
(user: ReturnType<typeof API.getUser>) => user,
);
但是,当我需要提取Promise<User>
时,这只会为我提供user
输出的User
这可能与打字稿有关吗?
答案 0 :(得分:2)
您可以使用条件类型:
export type UnBoxPromise<T> = T extends Promise<infer U> ? U : never;
export declare const getUser: (id: string) => Promise<User>;
const fetchUserSuccess = createAction(
'users/GET_ONE_SUCCESS',
(user: UnBoxPromise<ReturnType<typeof getUser>>) => user,
);