gpt4 book ai didi

javascript - 使用装饰器中的原型(prototype)/访问基类属性访问派生类中的基类属性

转载 作者:太空狗 更新时间:2023-10-29 18:21:55 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com