Мне нужен тип, который принимает обобщенный объект, который расширяет объект функций и "вложенных" функций и "возвращает" объект, в котором каждая функция имеет измененную сигнатуру функции.
Так это
{ foo: (a) => (b) => ({}), nested: { bar: (a) => (b) => ({}) } }
становится этим
{ foo: (a) => ({}), nested: { bar: (a) => ({}) } }
Я пытался ввести это так:
type Convertor<
T extends { [key: string]: NestedMap<Function> | Function }
> = { [P in keyof T]: Converting<T[P]> }
Это не работает, так как Converting<T[P]>
должно происходить только тогда, когда это функция. т.е. для foo
и nested.bar
, но не для nested
, так как это объект.
Как это правильно напечатать?