Push-элемент с интерфейсами на typescript

#javascript #arrays #typescript #interface

#javascript #массивы #typescript #интерфейс

Вопрос:

Мне нужна некоторая помощь по интерфейсам в typescript

У меня есть 3 интерфейса:

 export interface HomeMenu {
    [name: string]: MenuItem;
}

export interface MenuItem {
    title: string;
    route: string;
    homeMenu?: HomeMenu;
}

export interface Menu {
    homeMenu: HomeMenu;
}
  

Теперь я делаю это :

 var json: Menu = {
    "homeMenu": {
        "aname1": {
            "title": "text",
            "route": "myroute"
        },
        "aname2": {
            "title": "text",
            "route": "myroute",
            "homeMenu": {
                "aname21": {
                    "title": "text",
                    "route": "myroute"
                },
                "aname22": {
                    "title": "text",
                    "route": "myroute"
                }
            }
        },
        "aname3": {
            "title": "text",
            "route": "myroute"
        }
    }
}
json.homeMenu["aname2"].title = "myTitle";
  

Но теперь, как я могу отправить новый элемент в HomeMenu? Я попытался расширить интерфейсы HomeMenu с помощью массива, но у меня ошибка в подписи индекса, массиву требуется число для индекса (name), а не строка

Я проверил Typescript, некоторые сообщения, и я не нашел ответа
Или, может быть, другое решение для создания функции push в объекте homeMenu?
Если кто-нибудь может мне помочь
Заранее спасибо

Ответ №1:

Как насчет:

 json.homeMenu["aname4"] = {
    title: "title 4",
    route: "route4"
};