在Typescript中是否需要访问器?

问题描述 投票:2回答:1

我理解封装在OOP中的重要性,访问器(getter / setter)提供了这种抽象级别。

但是,使用Typescript,我可以在以后使用相同的名称替换我的属性和访问器,并将我的属性重命名为带有下划线的前缀(因此不会导致重大更改)。

例如,我可以:

class foo {

  name: string;

}

稍后如果我想为此属性添加访问器,我可以更改为以下内容:

class foo {

  private _name: string;

  get name():boolean {
    return this._name;
  }

  set name(name: string) {
    this._name = name;
  }

}

这被认为是不好的做法吗?

在这种情况下访问者的目的是什么?

typescript oop encapsulation accessor
1个回答
4
投票

访问器是一个实现细节。如果你遵循“program to the interface, not to the implementaion”规则,foo的用户应该只看到

interface foo {
    name: string;
}

这个界面的实现方式无关紧要。它可以是具有getter和setter的类,具有公共属性的类,甚至是普通对象。

最好的是由特定实现必须遵守的约束决定的。在大多数情况下,访问器似乎不是必需的,但有时可能很方便。

© www.soinside.com 2019 - 2024. All rights reserved.