Dado que TypeScript permite decorar solo clase, método, propiedad o setter/getter debido a la elevación, ¿hay alguna forma de decorar una función sin procesar? O tal vez algo similar al mecanismo de decoración o incluso escribir un mecanismo personalizado propio para evitar las reglas de TypeScript. Gracias.
Técnicamente, esta no es una de las "reglas de TypeScript", sino un problema con JavaScript. Todavía no es sintácticamente posible usar @decorator para funciones, pero en esencia, un decorador de función es solo una función de orden superior que envuelve la función decorada.
Lo más parecido que puedes hacer es definir un contenedor de función
function foo() { return "asd"; } const wrap = (func: () => void) => { const wrapped = () => { console.log("wrapped"); return func(); } return wrapped; } console.log(wrap(foo)());