Destell
@Destell
React, React Native junior developer

Как правильно заменить / добавить элемент массива?

Есть некие айтемы:

@observable items: Array<TCardItem> = [];

И их тип:

export type TCardItem = {
    id: string;
    photoUrl: string;
    name: string;
    lastname: string;
    phoneValues: Array<number | string>;
    address: string;
};

Далее с ними совершаются операции:

deleteItem = (id: string) => {
        this.items = this.items.filter(item => item.id !== id);
    };

saveItem = (id: string, modifiedItem: object) => {     
        this.items = this.items.map(item =>
            item.id === id ? modifiedItem : item
        );
    };

    addItem = (idItem: object) => {
        this.items = [...this.items, idItem];
    };

this.items во второй и третьей функции выбивают ошибку:

Тип "object[]" не может быть назначен для типа "TCardItem[]".
Type '{}' is missing the following properties from type 'TCardItem': id, photoUrl, name, lastname, and 2 more.

Я более чем уверен, что это происходит потому что items получают данные вида Proxy {}. Как правильно написать декларацию для этого?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
0xD34F
@0xD34F
Если items это массив TCardItem, то и передавать в saveItem и addItem наверное надо TCardItem, а не object:

saveItem = (id: string, modifiedItem: TCardItem) => {

Кстати, а зачем в saveItem отдельно передавать id? - он же должен быть в modifiedItem.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы