微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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' }

谢谢!

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。