Отсутствует аннотация типа для 'U' - PullRequest
0 голосов
/ 01 октября 2019

Следующий код работает нормально, но я получаю сообщение об ошибке потока:

    case UPDATE_USER: {
      return {
        ...state,
        users: state.users.map((user) => {
          if (user.id === action.id) {
            return {...user, [action.propName]: action.payload};
          } else {
            return user;
          }
        })
      };
    }

Точное сообщение таково:

<U>(
  callbackfn: (
    value: User,
    index: number,
    array: Array<User>
  ) => U,
  thisArg?: any
) => Array<U>

any

Missing type annotation for `U`. `U` is a type parameter declared in  function type [1] and was implicitly instantiated at call of method `map` [2].Flow(InferError)

Я подозреваю, что проблема может быть связанак тому, как я определил свои типы действий для Редуктора:

type ToggleModalAction = {type: typeof TOGGLE_MODAL};
type CancelRequestAction = {type: typeof CANCEL_REQUEST, payload: boolean};
type UpdateCompanyAction = {type: typeof UPDATE_COMPANY, payload: number};
type ResetStateAction = {type: typeof RESET_STATE};
type AddUserAction = {type: typeof ADD_USER, isDirty: boolean};
type UpdateUserAction = {type: typeof UPDATE_USER, id: number, propName: string, payload: string | number};
type RemoveUserAction = {type: typeof REMOVE_USER, id: number};

Я пробовал несколько вещей, чтобы решить его, но ни одна из них не работает. Есть идеи?

1 Ответ

0 голосов
/ 03 октября 2019

Похоже, вам нужно указать возвращаемое значение для карты

case UPDATE_USER: {
      return {
        ...state,
        users: state.users.map((user): User => {
          if (user.id === action.id) {
            return {...user, [action.propName]: action.payload};
          } else {
            return user;
          }
        })
      };
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...