如何不带括号将参数传递给函数?

时间:2019-05-20 10:46:59

标签: angular typescript

我有以下代码:

this.somePromiseFn<T>  // this fn is actually a promise
.then(res => res as T)
.catch(err => this.handleError<T>(err));

handleError<T>(err: HttpErrorResponse) {
  // do something here
  // and return like
  return {} as T;
}

上面的代码工作正常。但是如何不使用其他回调函数而将err参数直接传递给handleError方法。默认情况下,由于catcherr传递给回调函数,因此它也应将err传递给handleCatchError。我想要类似的东西:

this.somePromiseFn<T>
.then(res => res as T)
.catch(this.handleCatchError<T>); // this line gives error 'An argument for 'err' was not provided'

但是上面的代码会产生错误:

  

期望1个参数,但得到0。
  没有提供“ err”的参数。

尽管我已经访问了以下问题:

  
      
  1. addEventListener calls the function without me even asking it to
  2.   
  3. Javascript "addEventListener" Event Fires on Page Load
  4.   

但是上面的问题还建议使用另一个回调函数。

3 个答案:

答案 0 :(得分:1)

this.somePromiseFn<T>
.then(res => res as T)
.catch(this.handleCatchError<T>);

这应该可以工作,试图重现该错误,但是可以正常工作see a demo,可能是我丢失了一些东西,必要时进行检查和更新。

答案 1 :(得分:1)

根据您提供的stackblitz,请参见

this.someFn().then(r => console.log(r)).catch(err => this.cb<any>(err));

答案 2 :(得分:0)

不提供生成的类型并绑定“ this”:

this.somePromiseFn<T>
    .then(res => res as T)
    .catch(this.handleCatchError.bind(this));