gpt4 book ai didi

javascript - 在类 get 和 set 方法上使用 ES 装饰器

转载 作者:行者123 更新时间:2023-11-29 11:01:11 25 4
gpt4 key购买 nike

按照装饰者的说法可以吗proposal在类 getter 或 setter 上有一个装饰器?还是只允许使用常规方法?例如

class Foo extends Bar {

@override
get someProp() {
super.someProp + 2;
}
}

一些库/框架提供了这样的装饰器。但是例如 babel 解析器 babylon 将其标记为错误!

最佳答案

我认为从装饰器的 Angular 来看,它完全可以应用于 setter/getter 字段,基本上是任何字段。由于“普通”属性和 setter/getter 属性在属性描述符的类型上不同 - data descriptor vs accessor descriptor装饰器应用于属性描述符,它可以应用于任何属性,包括“setter/getter”和“method”属性。

例如,您可以在装饰器中将 setter 更改为“normal”属性:

function removesetter(klass, prop, descriptor) {
return {
value: 5,
writable: true
}
}

class Foo {
@removesetter
get someProp() {
return 3;
}
}

const f = new Foo();
console.log(f.someProp); // 5

关于javascript - 在类 get 和 set 方法上使用 ES 装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46792821/

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