جافاسكريبت - توسيع الفئات باستخدام المزخرفات في تايب سكريبت
أود توسيع فصل باستخدام المزخرفات ولكن لا أعرف بالضبط كيف. نهجي الحالي هو كما يلي:
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 });
}
}
يجب أن يعمل بشكل جيد
