let access = environment.access.filter(it => it.roleName === userRole);
let access = environment.access.find(it => it.roleName == userRole);
Свойство 'фильтр' не существует для типа '{ siteadmin: string[]; менеджер: строка[]; сотрудник: строка[]; подрядчик: любой[]; }'.
Это должно работать, но я не могу понять, почему он выдает эту ошибку, когда я сборка или нг служить
используя угловой 13
Окружающая среда.ts
export const environment = {
production: false,
baseUrl:"https://localhost:5001/api/",
access: [{
roleName:"siteadmin",
access:['page1','home', 'usermanagement']
},
{
roleName:"manager",
access:['home']
},
{
roleName:"employee",
access:['page1','home']
},
{
roleName:"contractor",
access:['page1','home', 'usermanagement']
}
],
};
доступ представляет собой массив объектов
@David, я добавил информацию. Среда — это файл environment.ts, а доступ — это массив внутри него.
Это ошибка времени выполнения из JavaScript, ошибка времени сборки из TypeScript или линтера? Возможно, где-то есть неправильное определение типа, и он на самом деле не ожидает тип, который вы предоставляете. Где определен тип для environment.access? Может ли intellisense вашей IDE и тому подобное помочь найти это?
ошибка сборки из терминала, когда я набираю ng serve или ng build. IDE не жалуется на проблемы с синтаксисом @David





Бьюсь об заклад, проблема в том, что вы отредактировали файл environment.ts, но не обновили файл environment.prod.ts (или эквивалент для любой конфигурации, которую вы предоставили с ng serve), чтобы он соответствовал той же структуре. Angular выполняет замену файла как часть процесса сборки, которая не будет обнаружена проверкой типов вашего редактора.
Вы были правы. Я думал, что ng serve будет использовать мою непроизводственную версию environment.ts, и я полагаю, что ng build будет использовать мою производственную версию.
Что такое
environment.access? Ошибка предполагает, что это не массив, а объект. И.filter()находится на массивах.