如何解决数组属性的打字稿获取器/设置器
是否可以使用getter / setter模式获得数组属性?
例如:
export class User {
private _name: string;
set name(value: string) {
this._name = value;
}
get name(): string {
return this._name;
}
private _roles = new Array<string>();
set roles(value: Array<string>) {
this._roles = value;
}
get roles(): Array<string> {
return this._roles;
}
constructor() {
}
}
虽然更改user.name会触发setter方法,但不会添加或删除角色中的项目。
现在,我想我明白为什么它不触发setter的原因,因为向数组中添加项目不会更改指针,而只会增加已分配的空间(如果我错了,请纠正我)。
如何在数组属性上获得所需的getter / setter行为?
解决方法
正如您所说,做类似user.roles.push('my-role')
的事情只会使现有数组发生突变。可以通过添加roles
和addRole
之类的方法来代替通过removeRole
设置器直接访问数组。然后,您可以实现在向roles
数组添加或删除数组时所需的任何逻辑,使其完全私有。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。