Как использовать find в Vuex с декораторами модулей

#typescript #vue.js

Вопрос:

В настоящее время я переношу все с Vue2 на Vue3 с помощью машинописного текста и декораторов модулей. Я получаю сообщение об ошибке, когда хочу использовать эту find функцию.

 @Module
export default class TagsModule extends VuexModule {
    data = {};
    get AllTag() {
        return (id) => {
            return this.data.find(tag => tag.id === id)
        };
    }
}
 

В нем говорится:: Property 'find' does not exist on type '{}'.

Я хочу добиться следующего:

  1. Я хочу отправить строку AllTag и использовать ее для поиска между data

Данные выглядят так:

 [
    {
        "id": 2,
        "created_at": null,
        "updated_at": null,
        "created_by": 1,
        "status": null,
        "uid": null,
        "name": "Testtaag",
        "class": "light-danger"
    }, {
        "id": 1,
        "created_at": null,
        "updated_at": null,
        "created_by": 1,
        "status": null,
        "uid": null,
        "name": "tihS",
        "class": "light-warning"
    }
]
 

Комментарии:

1. В вашем примере кода data это объект. У объектов нет find метода. Массивы делают, однако: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

2. Каков наилучший способ действий?

3. С помощью массива, если вы хотите использовать методы массива…

Ответ №1:

Вы определили data как data = {}; . Это объект, поэтому метод массива find не имеет смысла. Если вы хотите сохранить массив (как показано в вашем примере), используйте data = []; .