Я изучаю, как использовать декораторы в Javascript, и не понимаю, когда целесообразно использовать наследование классов против декораторов?
Например, следующее использует декораторы для добавления метода в класс. Он также переписывает один из методов декорированных классов.
import $ from "jquery";
function write(msg) {
$("#app").prepend(msg);
}
function clean(constructor) {
return class extends constructor {
foo() {
write("<h1>from the Decorated class</h1>");
}
bar() {
write("I haz bar");
}
};
}
@clean
class Hello {
foo() {
write("<h1>from the undecorated class</h1>");
}
}
const h = new Hello();
h.();
AFAIK, с наследованием - если родительский и дочерний классы имеют одинаковые методы, это будет перевернуто: child перезапишет родительский класс. В ситуации, когда я НЕ хотел бы, чтобы это произошло, декораторы были бы желаемым выбором. Это правильно?
P.S.
Я знаю декораторов еще не официально на языке.