Как объявить 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)