высшего порядка?
const doSmthWithFirstArg = (func) => (firstArg, ...rest) =>
func(doSmth(firstArg), ...rest);
Все что она делает, это просто принимает на вход функцию и заменяет ей тип первого аргумента.
Хотел немного упростить свою жизнь, сделав такой мелкий хэлпер, в результате хз как его протипизировать и эта задача мне не дает покоя.
generic не решает проблему?
А почему doSmth захардкожено? Почему не инджектить? В любом случае, надо как-то знать тип этой doSmth Я бы делал так: https://bit.ly/32hTrii (на 6й строчке подставьте свою doSmth, а на 8й строчке придумайте свою func - я не знаю что именно там у вас)
function transformFirstArg<From, To, Rest extends any[], Return>( trans: (from: From) => To, fn: (first: To, ...rest: Rest) => Return ): (first: From, ...rest: Rest) => Return { return (first: From, ...rest: Rest): Return => fn(trans(first), ...rest); } const fn = transformFirstArg((x: number) => `Number: ${x}`, console.log); fn(123, "hello"); // => Number: 123 hello
Обсуждают сегодня