在TypeScript中,提供的参数与呼叫目标的任何签名都不匹配"

时间:2017-02-14 04:59:40

标签: angular typescript

在JavaScript中,我们可以根据我们传递的参数数量调用一个函数,它将采用 undefined 而不会出现任何错误。请参阅以下代码段以供参考。



function test(a,b){
  if(b){console.log(b)}
  else{console.log('b is undefined')}
  console.log(a)
}
test(5);
test(5,6);




在angular2中,我有一项名为DataWrapperService的服务:



export class DataWrapperService {

  constructor(private http: Http) { }
  
  getData (URL,interval): Observable<any> {
    if(interval){
      return Observable
      .interval(interval)
      .flatMap(() => return this.http.get(URL)
                .map(this.extractData)
    }else{
     return this.http.get(URL)
                .map(this.extractData)
     }
  }
  private extractData (res: Response) {
    let body = res.json();
    return body || { };
  }

}
&#13;
&#13;
&#13;

我正在测试组件中使用datawrapper服务。

&#13;
&#13;
export class TestComponent implements OnInit {

  constructor(private dataWrapper : DataWrapperService) { }

  ngOnInit() {
  	this.getTestData();
  }

  getTestData() {
  	this.dataWrapper.getData("http://localhost/test").subscribe(data => this.handleTestData(data)
  }

  handleTestData(data) {
  	console.log(data)
  }

}
&#13;
&#13;
&#13;

当我尝试调用getData只传递一个参数作为url时,TypeScript会抛出错误提供的参数与调用目标的任何签名都不匹配。

1 个答案:

答案 0 :(得分:1)

要使函数参数可选,请添加“?”到函数签名中的参数。 例如:

func(param1:string, param2?:string) {}