В моем проекте я использую универсальный тип с именем Data<X>
, который преобразует данный тип X
определенным образом.
СейчасЯ хочу создать универсальный тип функции DataFunction<F extends Function>
, охватывающий все параметры F
в Data<Parameter>
.
ДляНапример, я хочу, чтобы
DataFunction<(a: Type1, b: Type2) => ReturnType>
приводил к
(a: Data<Type1>, b: Data<Type2>) => ReturnType
Я сделал это для преобразования известного числа параметров, здесь обертывание первого параметра в Data<Parameter>
, оставив следующие без изменений:
type DataFunction<T extends (arg0: any, ...args: any[]) => any>
= T extends (arg0: infer A, ...args: infer P) => infer R
? (arg0: Data<A>, ...args: P) => R
: any;
Мой вопрос, как я могу также обернуть все следующие параметры в Data<Paramter>
? Я хочу что-то вроде этого, которое не работает:
type DataFunction<T extends (arg0: any, ...args: any[]) => any>
= T extends (arg0: infer A, ...args: [infer P]) => infer R
? (arg0: Data<A>, ...args: [Data<P>]) => R
: any;