[[[https://codepen.io/rene-link/pen/bGooLWy]]]
import "https://codepen.io/rene-link/pen/dyzBMoW.js";
const traceLog = <
F extends (...args: any[]) => any,
P extends Parameters<F>,
R extends ReturnType<F>
>(
fn: F,
fnName = fn.name
): ((...args: P) => R) => {
return (...args) => {
console.log(`Calling ${fnName} with args`, args);
const result = fn(...args);
console.log(`Result of ${fnName} is`, result);
return result;
};
};
function sum(num1: number, num2: number): number {
return num1 + num2;
}
const sumWithTrace = traceLog(sum);
console.log(sumWithTrace(3,5));
View Compiled
This Pen doesn't use any external JavaScript resources.