【发布时间】:2020-01-08 17:50:43
【问题描述】:
考虑以下代码:
function configurable(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
descriptor.set = (n: number) => {
target[`_${propertyKey}`] = n * 100;
};
}
class Test {
_prop: number = 10;
@configurable
get prop(): number {
return this.prop;
}
}
const t = new Test();
t.prop = 100;
这是一个愚蠢的例子,我试图动态添加一个带有装饰器的设置器,但打字稿抱怨t.prop是只读的
【问题讨论】:
-
TS 编译器看不到装饰器添加了 setter,因为这是在运行时完成的。它看到只有一个 getter,所以它假定该属性是只读的。你能不能也生成getter,所以你只需要在课堂上写
prop: number吗?
标签: typescript typescript-decorator