gpt4 book ai didi

typescript - 如何使用装饰器覆盖 typescript 中类的静态方法

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:29 24 4
gpt4 key购买 nike

这是我在 javascript 中所做的

class A {
static foo (a, b, callback) {
setTimeout(() => {
let result = doSomethig(a, b)
callback(result)
}, 1000)
}
}

function decorator (OriginalClass) {
return class extends OriginalClass {
static foo (a, b) {
return new Promise((res) => {
super.foo(a, b, (result) => {
res(result)
})
})
}
}
}

@decorator
class B extends A {
}

let result = await B.foo(10, 20)

我想覆盖一个类的方法,在覆盖的方法中,我想调用原来的方法。有没有办法在 typescript 中做到这一点?

最佳答案

你可以这样做:

class A {
static bar() {
console.log("barA");
}
}

function decorator(OriginalClass: any) {

let baseBar = OriginalClass.bar;
OriginalClass.bar = function () {
baseBar();
console.log("barOverridden");
}
return OriginalClass;
}

@decorator
class B extends A {
}

B.bar();

关于typescript - 如何使用装饰器覆盖 typescript 中类的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44216280/

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