首页 > 解决方案 > 是否可以将泛型类型作为泛型参数传递?

问题描述

只需传递泛型类型,如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>;

这可能吗?

标签: typescript

解决方案


目前是不可能的。早在 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

推荐阅读