جافاسكريبت - توسيع الفئات باستخدام المزخرفات في تايب سكريبت


أود توسيع فصل باستخدام المزخرفات ولكن لا أعرف بالضبط كيف. نهجي الحالي هو كما يلي:

function Foo(value: string) {
    return function(target: Function) {
        let injected = Object.assign(target.prototype, { foo: value });
        return injected;
    }
}

@Foo("Hello world")
class Bar {
}

let instance = new Bar();
console.log(instance.foo); // Should say "Hello World"

لكن لا يمكنني إنشاء نسخة من صلاحيتي بعد الآن: "TypeError: Bar ليس منشئًا."

أين خطأي؟

الإجابة رقم 1

لا تحتاج إلى إعادة كائن جديد من المزخرف. في هذه الحالة سيتم تعديل الكائن المستهدف، لذلك فقط

function Foo(value: string) {
  return function(target: Function) {
    Object.assign(target.prototype, { foo: value });
  }
}

يجب أن يعمل بشكل جيد