Нужны ли аксессоры в Typescript? - PullRequest
0 голосов
/ 26 июня 2018

Я понимаю важность инкапсуляции в ООП, и методы доступа (геттеры / сеттеры) обеспечивают этот уровень абстракции.

Тем не менее, с помощью Typescript я могу позднее заменить свое свойство средствами доступа с тем же именем и переименовать свое свойство с префиксом подчеркивания (следовательно, не вызывая критических изменений).

Например, я мог бы иметь:

class foo {

  name: string;

}

Позже, если я захочу добавить средства доступа к этому свойству, я могу изменить на следующее:

class foo {

  private _name: string;

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

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

}

Это считается плохой практикой?

Какова цель средств доступа в этом контексте?

1 Ответ

0 голосов
/ 26 июня 2018

Средства доступа - это деталь реализации. Если вы соблюдаете правило « для интерфейса, а не для правила », пользователи foo должны видеть только

interface foo {
    name: string;
}

Как именно реализован этот интерфейс, не имеет значения. Это может быть класс с геттерами и сеттерами, класс с открытым свойством или даже простой объект.

В зависимости от того, что лучше, определяется ограничениями, которым должна соответствовать конкретная реализация. В большинстве случаев средства доступа не требуются, но иногда могут быть удобны.

...