Typescript - Ändra funktions returtyp
Jag vill skriva över en funktion och ändra dess returtyp. Jag har hittat detta tillvägagångssätt, TypeScript: Hur man wrapper en funktion och ändrar dess returtyp?. Dock skulle jag vilja ha ett mer generellt.
type Test = (
a: string,
b: string,
c: number,
) => string | Promise<string>;
type Test2 = (
a: string,
b: string,
c: number,
) => number | Promise<number>;
Vad jag förväntar mig är något liknande:
// CopyFunction(Function, Return)
type Test2 = CopyFunction(Test, number | Promise<number>);
Svar #1
Du kan skapa en typ som använder konditionella typer och tupler i rest-parametern för att göra vad du vill:
type CopyFunction<TFn, TR> = TFn extends (...a: infer A) => any ? (...a:A) => TR: never
type Test22 = CopyFunction<Test, number | Promise<number>>;
