Проблема TypeScript с поиском и фильтрацией

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']
  }
],
};

доступ представляет собой массив объектов

Что такое environment.access? Ошибка предполагает, что это не массив, а объект. И .filter() находится на массивах.

David 13.05.2022 02:40

@David, я добавил информацию. Среда — это файл environment.ts, а доступ — это массив внутри него.

software is fun 13.05.2022 03:05

Это ошибка времени выполнения из JavaScript, ошибка времени сборки из TypeScript или линтера? Возможно, где-то есть неправильное определение типа, и он на самом деле не ожидает тип, который вы предоставляете. Где определен тип для environment.access? Может ли intellisense вашей IDE и тому подобное помочь найти это?

David 13.05.2022 03:10

ошибка сборки из терминала, когда я набираю ng serve или ng build. IDE не жалуется на проблемы с синтаксисом @David

software is fun 13.05.2022 03:21
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
4
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Бьюсь об заклад, проблема в том, что вы отредактировали файл environment.ts, но не обновили файл environment.prod.ts (или эквивалент для любой конфигурации, которую вы предоставили с ng serve), чтобы он соответствовал той же структуре. Angular выполняет замену файла как часть процесса сборки, которая не будет обнаружена проверкой типов вашего редактора.

Вы были правы. Я думал, что ng serve будет использовать мою непроизводственную версию environment.ts, и я полагаю, что ng build будет использовать мою производственную версию.

software is fun 13.05.2022 03:50

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