ожидал не менее 0 аргументов, но получил 2 - PullRequest
0 голосов
/ 28 сентября 2018

Я получаю сообщение об ошибке типа Expected 0 type arguments, but got 2 на updateRole() из следующего кода

account-endpoint.service.ts

getRoleByRoleNameEndpoint<T>(roleName: string): Observable<T> {
    let endpointUrl = `${this.roleByRoleNameUrl}/${roleName}`;

    return this.http.get<T>(endpointUrl, this.getRequestHeaders()).pipe<T>(
      catchError(error => {
        return this.handleError(error, () => this.getRoleByRoleNameEndpoint(roleName));
      }));
  }

  getUpdateRoleEndpoint<T>(roleObject: any, roleId: string): Observable<T> {
    let endpointUrl = `${this.rolesUrl}/${roleId}`;

    return this.http.put<T>(endpointUrl, JSON.stringify(roleObject), this.getRequestHeaders()).pipe<T>(
      catchError(error => {
        return this.handleError(error, () => this.getUpdateRoleEndpoint(roleObject, roleId));
      }));
  }

account.service.ts

private onRolesChanged(roles: Role[] | string[], op: RolesChangedOperation) {
    this._rolesChanged.next({ roles: roles, operation: op });
  }

  updateRole(role: Role) {
    if (role.id) {
      return this.accountEndpoint.getUpdateRoleEndpoint(role, role.id).pipe(
        tap(data => this.onRolesChanged([role], AccountService.roleModifiedOperation)));
    } else {
      return this.accountEndpoint.getRoleByRoleNameEndpoint<Role>(role.name).pipe<Role>(
        mergeMap((foundRole: Role) => {
          role.id = foundRole.id;
          return this.accountEndpoint.getUpdateRoleEndpoint(role, role.id);
        }),
        tap(data => this.onRolesChanged([role], AccountService.roleModifiedOperation)));
    }
  }

Как исправить эту ошибку?

1 Ответ

0 голосов
/ 29 сентября 2018

Я мог бы придумать это, но я думаю, что я обнаружил, что машинопись иногда плохо показывает истинный источник / причину ошибок аргументов типа.Я не уверен, является ли это причиной вашей проблемы, но похоже, что вы пропустили аргумент типа в определении метода getRoleByRoleNameEndpoint.

getRoleByRoleNameEndpoint<T>(roleName: string): Observable<T> {
  let endpointUrl = `${this.roleByRoleNameUrl}/${roleName}`;

  return this.http.get<T>(endpointUrl, this.getRequestHeaders()).pipe<T>(
    catchError(error => {
      return this.handleError(error, () => this.getRoleByRoleNameEndpoint(roleName));

                   // looks like this should have a type argument here ^
                   // unless I'm missing somehow it can be inferred
    })
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...