ts怎样实现,防止类中的属性被直接赋值修改?

Domakun
  • 15

`export class Animal {

 privateAttribute
 
 setPrivateAttribute(value) {
        this.privateAttribute = value
    }

}
new Animal().setPrivateAttribute('good way') //ok
new Animal().privateAttribute = 'not allowed' // no`

我想避免在外部直接赋值,就能修改对象内的数据,请问有啥好的想法吗?

回复
阅读 1.4k
3 个回答
✓ 已被采纳
export class Animal {
+ protected privateAttribute
 
 setPrivateAttribute(value) {
   this.privateAttribute = value
 }
}

typescript access modifier

class Animal {
  constructor() {
    let privateAttribute = 'default';

    this.setPrivateAttribute = newValue => {
      privateAttribute = newValue
    }

    this.getPrivateAttribute = () => privateAttribute;
  }
}

let newAnimal = new Animal()
// get variable value
newAnimal.getPrivateAttribute()

// Set new Value
newAnimal.setPrivateAttribute('New Value')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进