Как защитить и массив от изменения с помощью инкапсуляции в TypeScript? - PullRequest
0 голосов
/ 26 октября 2019

Рассмотрим следующий код:

class Customers {
  private _list: Array<Person>;

  constructor() {
    this._list = [];
  }

  public get customerList(): Array<Person> {
    return this._list;
  }
}

С учетом этого кода, похоже, нет никакого способа помешать потребителю изменить массив customerList способами, которые мне могут не понравиться. Например, потребитель может позвонить

myCustomer.customerList.slice(1, 2);

и удалить клиентов без «разрешения».

На других языках я представляю список как IEnumerable<T>, а затем, при желании, предоставляю конкретные методы удаления.

Как правильно инкапсулировать и защитить свойство customerList () вTypeScript?

(Совершенно рад признать, что я иду по этому совершенно неправильному пути .....)

1 Ответ

2 голосов
/ 26 октября 2019

TypeScript's ReadonlyArray<T> - это именно то, что вы ищете. Интерфейс предотвращает изменение массива клиентским кодом.

...