Ошибка машинописного текста при использовании SP ClientContext и CSOM с SPFX

У меня был этот код, работающий в классическом режиме SharePoint, но теперь я хотел бы использовать его в современном пользовательском интерфейсе, который использует Typescript

Я получаю эту ошибку Свойство 'Children' не существует для типа '{ Id: ObjectConstructor; Заголовок: ObjectConstructor; URL: ObjectConstructor; ParentId: ObjectConstr...'

в строке:- menuItem.Children = new Array();

а также

menuItem.HasChildren = false;

и ошибка: - ошибка TS2538: тип ObjectConstructor нельзя использовать в качестве типа индекса. at:- arrayMenuItemsUnsorted[menuItem.Id] = menuItem;

Любые советы будут оценены и только начались с Typescript:(

function GetConfigDataSuccess(sender, args) {
    //var configValue = listItems.itemAt(0).get_item("Title");
    //alert(configValue);
// Do the actual functionality here..
var html = "";

  var listItemEnumerator = siteNavigationListItems.getEnumerator();


    var counter = 1;

    html += "<div class=\"ms-displayInline ms-core-navigation\">";
    html += "<div class=\"noindex ms-core-listMenu-horizontalBox s-TopNavigationMenu\">";
    html += "   <ul class=\"root ms-core-listMenu-root static\">";

    var arrayMenuItemsUnsorted = new Array();
    while (listItemEnumerator.moveNext()) {
        var oListItem = listItemEnumerator.get_current()

        //let menuItem = new Object();

    interface menuItem {
      Id: Object,
      Title: Object,
      Url: Object,
      ParentId: Object,
      Key: Object,
      Order: Object,
      Column: Object
    };

        menuItem.Id = oListItem.get_id();
        menuItem.Title = oListItem.get_item("Title");
        menuItem.Url = oListItem.get_item("URL") == null ? "#" : oListItem.get_item("URL").get_url();
        menuItem.ParentId = oListItem.get_item("Parent") == null ? 0 : oListItem.get_item("Parent").get_lookupId();
        menuItem.Key = oListItem.get_item("Key");
        menuItem.Order = oListItem.get_item("Order0");
    menuItem.Column = oListItem.get_item("Column");




        menuItem.Children = new Array();
        menuItem.HasChildren = false;

        arrayMenuItemsUnsorted[menuItem.Id] = menuItem;
    }

    var topLevelMenuItems = new Array();

    for (let menuItemId in arrayMenuItemsUnsorted) {
        var menuItem = arrayMenuItemsUnsorted[menuItemId];

        if (menuItem.ParentId == 0)
            topLevelMenuItems.push(menuItem);

        for (let childMenuItemId in arrayMenuItemsUnsorted) {
            var childMenuItem = arrayMenuItemsUnsorted[childMenuItemId];
            if (childMenuItem.ParentId != menuItem.Id)
                continue;

            menuItem.HasChildren = true;
            menuItem.Children.push(childMenuItem);
        }
    }

    topLevelMenuItems.sort(function (a, b) { return a.Order - b.Order; });

    for (var i = 0; i < topLevelMenuItems.length; i++) {
        html += buildMenuItemHtml(topLevelMenuItems[i], 0);
    }

    html += "</ul>";
    html += "</div>";
    html += "</div>";

    $("#DeltaTopNavigation").children().hide();
    if ($("#DeltaTopNavigation .s-TopNavigationMenu").length == 0) {
        $("#DeltaTopNavigation").append("<div class=\"s-TopNavigationMenu\">" + html + "</div>");
    } else {
        $("#DeltaTopNavigation .s-TopNavigationMenu").html(html);
        $("#DeltaTopNavigation .s-TopNavigationMenu").show();
    }

    // if (typeof siteNavigationLoaded == "function")
    //  siteNavigationLoaded();
}

0 ответов

Другие вопросы по тегам