保留功能和功能参数类型

时间:2019-05-03 09:59:01

标签: typescript typescript-generics typescript3.0

我想将一个函数和该函数的参数发送给另一个函数。这样做时,我想保留所有键入信息,并获得智能感知和所有语法检查。最终目的是在以后的阶段调用该函数。

目前我有类似的东西,它可以工作,但是不能为我提供带有参数的类型安全性:

functionA () {
   return this.functionB(someService.someMethod, ["one", "two", "three"]);
}

functionB<TResponse, TFunction extends (...args: any[]) => Promise<TResponse>>(
   fn: TFunction,
   params: Parameters<TFunction>): Promise<TResponse> {

   ...
}

我在下面尝试过此方法,该方法似乎可以修复调用语法,但是会产生其他效果,例如失去函数的结果类型,更重要的是,在编译器中给出错误Type 'TFunction' does not satisfy the constraint '(...args: any[]) => Promise<TResponse>'.

functionB<TResponse, TFunction extends Function>(
   fn: TFunction,
   params: Parameters<TFunction>): Promise<TResponse> {

   ...
}

0 个答案:

没有答案