Since TypeScript allows decorate only class, method, property or setter/getter because of hoisting, is there any way to decorate a raw function? Or maybe something similar to decoration mechanism or even write own custom mechanism to avoid TypeScript rules.