Как передать Generi c в составную функцию вместо простого типа (например, строка, число) - PullRequest
0 голосов
/ 15 января 2020

У меня есть следующая функция. Составляет ряд функций справа налево. Просто это работает как шарм. Я хочу использовать Generi c вместо стандартного типа (например, string, number et c) ..

// I want instead of string, to use a Generic <R>, for example.
const composeUtility = (...functions: Function[]) => (initialValue: string) =>
  functions.reduceRight((accumulator, currentFn: Function) => currentFn(accumulator), initialValue);

SO, мне не нужно использовать его только с такими строками :

const withComposition = composeUtility(repeatFn, exclaimFn, screamFn);
console.log(withComposition('I Love TS - So Much')); // This only accepts strings. I want to pass more than that.

Как это сделать? Любые идеи? Я пробовал несколько синтаксисов, но TS жалуется. И не могу найти ссылку в Интернете. Спасибо тебе ..

1 Ответ

1 голос
/ 15 января 2020

Добавьте универсальный c тип возврата к функциям редуктора:

const composeUtility = <R>(...functions: ((acc: R) => R)[]) => (initialValue: R) =>
    functions.reduceRight((accumulator, currentFn: (acc: R) => R) => currentFn(accumulator), initialValue);

Все редукторы примут аккумулятор одного типа R.

...