首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组属性上的typescript getter / setter

数组属性上的typescript getter / setter
EN

Stack Overflow用户
提问于 2020-08-21 16:31:08
回答 1查看 867关注 0票数 1

对于数组属性,有没有使用getter / setter模式的好方法?

例如:

代码语言:javascript
运行
复制
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行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-21 17:09:20

正如您所说的,像user.roles.push('my-role')这样做只会改变现有的数组。您可以添加像addRoleremoveRole这样的方法,而不是通过roles-setter直接访问数组。然后,您可以在向roles数组添加或删除时实现所需的任何逻辑,使其完全私有。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63519316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档