Объявление функции карри в TypeScript - PullRequest
0 голосов
/ 06 сентября 2018

Заданный интерфейс для карри функции с одним параметром

interface CurriedFunction1<T1, R> {
   (): CurriedFunction1<T1, R>
   (t1: T1): R
}

Как я могу объявить универсальную функцию этого типа?

Следующие объявления не работают:

declare let myFunction: CurriedFunction1<T[], string> // Cannot find name 'T'.
declare let myFunction2:<T>CurriedFunction1<T[], string> // '( expected.

1 Ответ

0 голосов
/ 07 сентября 2018

Благодаря вашему комментарию теперь я понимаю, что вы пытаетесь сделать! Это невозможно. Список параметров типа подписи вызова фиксируется, когда подпись вызова объявляется в интерфейсе, и отсутствует поддержка добавления универсального количественного определения переменных типа к существующему типу, например CurriedFunction1<T[], string>. Самое близкое, что вы могли бы сделать, - это ввести функцию-обертку, которая должна вызываться с аргументом типа, чтобы получить фактическое значение CurriedFunction1:

.
declare let myFunction: <T>() => CurriedFunction1<T[], string>
...