Тип потока: Возвращаемый тип функции должен быть таким же, как аргументы обратного вызова? - PullRequest
0 голосов
/ 12 июня 2019

У меня есть следующая функция -

function wrapper(callback) {
  // operation
}

Мне нужно, чтобы возвращаемый тип wrapper был таким же, как первый (единственный) аргумент, переданный в callback. Например,

wrapper(({paramA, paramB}) => {}) 
// returns { paramA: somveVal, paramB: someVal }

Это вообще возможно?

Ответы [ 2 ]

1 голос
/ 13 июня 2019
function wrapper<T>(callback: T => mixed): T { ...}

Обратите внимание, что эта подпись невыполнима, если вы на самом деле не хотите, чтобы она была общей.

0 голосов
/ 13 июня 2019

Если я хорошо понимаю, вам нужно что-то вроде этого:

Например, объявить type CallBack:

type CallBack = {|
  paramA: any,
  paramB: any,
 // Or use other type instead any.
|}

И annotate функция :

const wrapper = (fn: (x: CallBack) => CallBack): CallBack => ({ paramA: 1, paramB: 2 });

Пример потока: Проба потока

...