TypeScript 属性装饰器所做的更改不会显示在日志中



如果我运行以下代码来修改destination属性:

const changeDestination = (value: string) => (target: Object, propertyKey: string) => {
Object.defineProperty(target, propertyKey, { value })
}
class Rocket {
@changeDestination('Mars')
destination = 'Moon'
}
const rocket = new Rocket()
console.log(rocket.destination) // -> Mars
console.log(rocket) // -> Rocket {}

为什么destination属性没有显示在第二次日志,当第一次日志确认,它实际上是存在的?如:

Rocket { destination: 'Mars' }

谢谢!

decorator函数在直接访问属性时调用,而不是在类实例化时调用。结果:实例化后属性未定义。

最新更新