是否可以将泛型类型作为泛型参数传递



只需像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

最新更新