【发布时间】:2021-10-23 23:00:35
【问题描述】:
我需要调用一个以解构数组为参数的泛型方法
据我所知,在今天,唯一的方法是使用已解构的数组并强制其类型为安全类型、继承参数 然后调用父方法,使用apply原型
例如:
这个 GET 承诺请求
public async getAsync<T>(url: string, options: HttpOptions<'GET'>): Promise<T> {
try {
const response = await this.http.get(url, options.params, options.headers);
return response.data;
} catch (e) {
throw new Error(e);
}
}
假设我需要相同的方法,但作为可观察的
在我的实际情况中,有多种具有特定参数的方法,将其设置为静态参数类型会很混乱,因为它会随着项目需求的变化而变化。 所以我需要使用参数数组,如果您对此声明有更好的解决方案,请随时发送
我认为会这样:
public getObservable<T>(...params: Parameters<HttpService['getAsync']>): Observable<T> {
const request = this.getAsync<T>.apply(this,params);
return from(request);
}
但事实并非如此:
所以我想知道,是否有办法使用 .apply 调用泛型方法?
【问题讨论】:
-
请考虑修改此问题中的代码以构成minimal reproducible example,将其放入像The TypeScript Playground (link, this a web IDE with your code in it) 这样的独立IDE 时,清楚地表明您面临的问题(因此没有不相关的错误,例如作为未导入或未声明的值或类型)。这将使那些想要帮助您的人立即着手解决问题,而无需首先重新创建它。它将使您得到的任何答案都可以针对定义明确的用例进行测试。
标签: typescript generics overriding typescript-generics