Сохранять функцию и тип параметров функции - PullRequest
1 голос
/ 03 мая 2019

Я хочу отправить функцию и параметры этой функции другой функции. При этом я хочу сохранить всю информацию о наборе и получить intellisense и всю проверку синтаксиса. Конечная цель - вызвать эту функцию на более позднем этапе.

На данный момент у меня есть что-то вроде этого, оно работает, но не дает мне безопасность типов с параметрами:

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> {

   ...
}
...