只需像callback
:一样传递泛型类型
type FUNC<ARG,RET, F> = (arg: ARG) => F<RET>;
type PROMISE<T> = Promise<T>;
type IDENT<T> = T;
type A = FUNC<number, void, IDENT>;
type A_PROMISE = FUNC<number, void, PROMISE>;
这可能吗?
目前还不可能。早在2014年就有一次讨论。请参阅本期。
如果您的意图是限制返回类型,您可以:
type FUNC<ARG,RET extends Promise<any>> = (arg: ARG) => RET;
要取回包装类型,您可以:
type PromiseType<T> = T extends Promise<infer T> ? T : never
type A = Promise<string>
type B = PromiseType<A> // string