Есть два интерфейса
interface IBigItem {
fieldName: string
label: string
default?: boolean
...еще много полей
}
interface ISmallItem {
fieldName: string
label: string
default: boolean
}
Есть большой массив с данными
const columns: IBigItem[]
Из него получаем вначале второй массив
const selected: ISmallItem = columns.map(column => ({
fieldName: column.fieldName,
label: column.label,
default: column.default ?? false
}))
Потом с selected выполняется ряд операций по изменению порядка (сортировка) элементов и у элементов может измениться свойство default.
Никаких новых элементов не добавляется и ничего не удаляется.
После этого нам нужно привести массив columns к тому же порядку элементов, что и selected, и обновить свойство default из selected.
const newColumns = selected.map(selectedColumn => {
const newColumn = columns.find(columnDef => columnDef.fieldName === selectedColumn.fieldName)
newColumn.default = selectedColumn.default
return newColumn
})
На строчке columnDef.fieldName === selectedColumn.fieldName выскакивает ошибка "Unsafe member access .fieldName on an `any` value" над selectedColumn.fieldName
А на строчке newColumn.default = selectedColumn.default ошибка "Unsafe assignment of an `any` value" над newColumn.default и "Unsafe member access .fieldName on an `any` value" над selectedColumn.default.
В чем проблема понять не могу, т.к. в IDE при наведении курсора на selectedColumn показывает правильный тип ISmallItem... Пробовал явно указывать типы через as и делать временные переменные, ничего не помогает.