Используя immutability-helper, как установить свойство экземпляра класса без клонирования других полей? - PullRequest
0 голосов
/ 02 января 2019

Вот пример:

class ExampleClass {
    private x: number;
    private ary: number[];

    constructor(x, ary = []) {
        this.x = x;
        this.ary = ary;
    }

    public getX() {
        return this.x;
    }

    public setX(x) {
        this.x = x;
    }
}

const elemArray = [new ExampleClass(10, [10, 20]), new ExampleClass(20, [20, 30])];

Я хочу установить для elemArray второго элемента *1004* значение 30, используя функцию setX. Самый простой способ будет:

const newElemArray = update(elemArray, {1: {$apply: function (x: ExampleClass) {
    const y = _.cloneDeep(x);
    y.setX(30); 
    return y;
}}});

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

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...