如何通过类方法重置TypeScript类实例?报错及解决办法
如何通过类方法重置类实例的所有属性值?
问题场景
想在类的方法里重置整个实例的属性值,最初尝试了以下写法:
export class User { // ..., reset() { this = new User(); } }
但运行时触发了TypeScript错误:
The left-hand side of an assignment expression must be a variable or a property access.ts(2364);
问题原因
this在类方法中是当前实例的引用,它并非可重新赋值的变量,所以直接给this赋值是不合法的语法。
可行解决方法
可以使用Object.assign()方法,将新创建的实例属性复制到当前实例上,实现重置效果:
export class User { // ..., reset() { Object.assign(this, new User()); } }
Object.assign()会把新User实例的所有可枚举属性覆盖到当前实例中,从而让当前实例恢复到初始状态。
内容的提问来源于stack exchange,提问作者Toby Yhs
相关产品推荐
相关产品推荐

