javascript - Funktion för att kapsla in en funktion och tillhandahålla en egenskap av ett objekt


Jag vill skapa en ny funktion från en initial funktion, där den initiala funktionen tar ett enda objektargument och den nya funktionen tar samma enda objektargument förutom ifyllda fält. Jag har något som liknar detta hittills:

function returnNewFunc<TArg extends { b?: string }>(
  initialFunc: (arg: TArg) => void
) {
  const newFunc = (arg: Omit<TArg, "b">) =>
    initialFunc({ ...arg, b: "hello" });

  return newFunc
}

const funcA = ({ b, c }: { b: string; c: string }) => {
  console.log(b, c);
};
const funcB = returnNewFunc(funcA)
funcB({c: "test"}) // funcB should have 'c' as the only field in its argument

Problemet här är att jag får ett could be instantiated with a different subtype of constraint TypeScript-fel, så jag måste göra något fel.