如何通过 TypeScript 中的封装来保护和排列不被更改?
How do protect and array from being altered via encapsulation in TypeScript?
考虑以下代码:
class Customers {
private _list: Array<Person>;
constructor() {
this._list = [];
}
public get customerList(): Array<Person> {
return this._list;
}
}
鉴于该代码,似乎没有任何方法可以阻止消费者以我可能不喜欢的方式更改 customerList
数组。例如,消费者可以调用
myCustomer.customerList.slice(1, 2);
并删除没有 "permission" 的客户。
在其他语言中,我会将列表公开为 IEnumerable<T>
,然后根据需要提供特定的删除方法。
如何在 TypeScript 中正确封装和保护 'customerList()' 属性?
(非常高兴地承认我正在以完全错误的方式解决这个问题......)
TypeScript's ReadonlyArray<T>
正是您要找的。该接口可防止客户端代码更改数组。
考虑以下代码:
class Customers {
private _list: Array<Person>;
constructor() {
this._list = [];
}
public get customerList(): Array<Person> {
return this._list;
}
}
鉴于该代码,似乎没有任何方法可以阻止消费者以我可能不喜欢的方式更改 customerList
数组。例如,消费者可以调用
myCustomer.customerList.slice(1, 2);
并删除没有 "permission" 的客户。
在其他语言中,我会将列表公开为 IEnumerable<T>
,然后根据需要提供特定的删除方法。
如何在 TypeScript 中正确封装和保护 'customerList()' 属性?
(非常高兴地承认我正在以完全错误的方式解决这个问题......)
TypeScript's ReadonlyArray<T>
正是您要找的。该接口可防止客户端代码更改数组。