имеет тип ResourcesType, а остальные как повезет. Я хочу обернуть эти функции таким образом, чтобы первый параметр передавать свой, а наружу светить функции без этого первого параметра. Короче, классический случай high order function. В принципе, всё работает, но не понимаю, как избавиться от залипухи с @ts-ignore на предпоследней строке.
const resources: ResourcesType = { someParam: "somestring" };
type DropFirstParameter<T extends unknown[]> = T extends [any, ...infer U] ? U : never;
const wrapWithResources =
<WrappedFuncParameteters extends [ResourcesType, ...Array<any>], WrappedFuncReturnType>( fn: ( ...args: WrappedFuncParameteters ) => WrappedFuncReturnType ) =>
( ...args: DropFirstParameter<WrappedFuncParameteters> ): WrappedFuncReturnType =>
// @ts-ignore
fn( resources, ...args );
const myFunc = wrapWithResources( myFuncWithResourceParameter );
а почему WrappedFuncParameteters extend WrappedFuncReturnType?
По-другому я не придумал
Обсуждают сегодня