Ошибка машинописного текста при использовании 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();
}