【发布时间】:2020-05-30 19:53:31
【问题描述】:
我有一个声明为类型的数组
const APIS = [NewsApi, CommentsApi, FileApi];
我希望有一个方法可以从 APIS 数组中接受其中一种类型,如下所示:
myMethod<T extends anyof APIS>(apiType: T): T {
const api = new apiType(); //pseudo code, does not work off course
// some common configuration code
return api;
}
。我不能做myMethod<T extends NewsApi|CommentsApi>(): T,因为 APIS 数组是自动生成的。打字稿可以做到这一点吗?
更新:
Aleksey 的解决方案非常适合传入输入。但是,无法从用法中推断出返回类型。
const myApi = myMethod(NewsApi);
在上述情况下,myApi 的类型不是NewsApi,而是NewsApi|CommentsApi|FileApi。
是否可以将返回类型显式设置为输入 api 类型的实例?
【问题讨论】:
标签: typescript generics typescript-generics type-constraints