Je joue avec javascript décorateurs mais je vais avoir du mal avec la cible qui est passé à la fonction décorateurQuel est le `target` dans les décorateurs javascript
Par exemple, si vous avez
@Bar()
class Foo {
@deprecated(true)
doMagic() {}
}
function Bar() {
return function decorator(target) {
}
}
function deprecated(state) {
return function decorator(target, name, config) {
return config;
}
}
Je pense que les deux cibles s sont une seule et même chose, à droite, et ce n'est pas. Par exemple
function Bar() {
return function decorator(target) {
let bar = new target(); // WORKS
bar instanceof target; // -> true
}
}
function deprecated(state) {
return function decorator(target, name, config) {
let bar = new target(); // ERROR
let bar = new target.constructor() // WORKS
bar instanceof target; // TypeError: Right-hand side of 'instanceof' is not callable
bar instanceof target.constructor // WORKS
return config;
}
}
Comme vous pouvez le voir, il y a une différence entre les deux cibles s, et ma question est ce qui ne va pas avec cette deuxième cible
J'utilise le noeud v7.8.0 et J'utilise les plugins babel de suivi (.babelrc)
{
"presets": [
"es2015",
"stage-0"
]
}
Les décorateurs ne font pas partie de la norme ECMAScript et la phase actuelle est 2. https://github.com/tc39/proposals –