Как объявить generic функцию, если это результат другого выражения?

Допустим, имеется некая generic функция:

type MyMap {
  a: number;
  b: string;
}
const lookupProperty = <K extends keyof MyMap>(key: K, map: MyMap)
  : MyMap[K] => map[key]  

Проблемы появляются, когда я пытюсь объявить generic функцию, которая является некого выражения, например, в моем случае это каррированная версия оригинальной:

function curry<T1, T2, ..., TN, R>(fn) {...}

const curriedLookup = curry(lookupProperty)

где fn - каррируемая функция, T1, ... TN - типы ее аргументов, R - тип возвращаемого значения

Для сохранения типизации, мне необходимо что-то типа

const curriedLookup = <K extends keyof MyMap>curry<K, MyMap>(lookupProperty)

но это не валидный tipescript синтаксис, как и если попробовать сделать generic левую часть выражения (curriedLookup)


Ответы (0 шт):