我正在使用 typescript ,并且正在为我的 Angular 类之一编写自定义装饰器。我想访问子类装饰器中的基类方法。或者使用子类原型(prototype)访问基类方法。有什么办法吗?问题在下面详细解释。
场景
我有一个像这样的基类
export class Base {
public init() {
console.log('My base class function');
}
}
我有一个派生类来扩展这个基类
export class Child extends Base {
}
我想做什么
我正在尝试为派生类编写装饰器,例如
@TestDecorator(['init'])
export class Child extends Base {
}
将从基类调用 init 方法。
问题是什么
为了完成上述场景,我编写了如下代码
export function Tool<T extends Base>(methods: any[]) {
return function (target: Function) {
methods.forEach((item) => {
if (item === 'init') {
target.super.init() // Stuck here
}
})
}
}
我不明白如何让下面这行工作
target.super.init() // Stuck here
请帮我解决问题。我卡住了。谢谢
最佳答案
我相信您正在寻找这样的东西:
export function Tool<T extends Base>(methods: any[]) {
return function (target: Function) {
return class extends target {
constructor(...args: any[]) {
super(...args)
methods.forEach((item) => {
if (item === 'init') {
super.init( );
}
})
}
}
}
}
关于javascript - 使用装饰器中的原型(prototype)/访问基类属性访问派生类中的基类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628101/