是否有可能获得承诺的“已解决”类型?

时间:2019-01-30 15:39:24

标签: javascript typescript

我有一个从库中定义的函数。

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

这可能与打字稿有关吗?

1 个答案:

答案 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,
);