es6 - javascript decorators
Decoradores en funciones (3)
Veo que los decoradores de babel.js (disponibles en "etapa 1") implementan la especificación en https://github.com/wycats/javascript-decorators . Parece que los decoradores están limitados a (1) clases, (2) accesorios y (3) métodos. En mi caso, quiero usar decoradores en viejas funciones simples, como en
@chainable
function foo() { }
donde (solo un ejemplo)
function chainable(fn) {
return function() {
fn.apply(this, arguments);
return this;
};
}
No veo ninguna razón lógica por la que los decoradores no puedan aplicarse a las funciones. Mi pregunta es, ¿hay alguna manera de lograr esto? ¿O hay alguna buena razón por la cual las funciones no pueden decorarse?
Resulta que hay un problema planteado para esto en https://github.com/wycats/javascript-decorators/issues/4 .
Ciertamente tienes un punto aquí.
Pero como señaló neo_blackcap , el decorador de funciones no forma parte del https://github.com/wycats/javascript-decorators .
Por lo tanto, lo mejor que puede hacer es iniciar la discusión en el rastreador correspondiente para atraer la atención de la comunidad a su propuesta.
Los decoradores de ES7 se encuentran en su primera etapa de desarrollo , lo que significa que su API todavía está en desarrollo y podría experimentar algún cambio.
Creo que el problema es que el decorador de funciones no ha sido borrador de ES7.
Por supuesto, aún puede implementar su decorador de funciones usted mismo
Para ejecutar un decorador, se evalúa una expresión y eso impide que se levante (incluso para una declaración de variable, el lado derecho de una tarea permanece fijo). Por lo tanto, no es compatible con las declaraciones de funciones que se están izando.
Como solución alternativa, sugerí que las expresiones de función, las expresiones de función del generador y las funciones de flecha se puedan habilitar para decorar:
const func = @someDecorator(''abc'') (x, y) => { return x + y };
Por desgracia, eso no fue recibido con mucho entusiasmo: https://esdiscuss.org/topic/decorators-for-functions