打字稿错误预期0个参数,但在Ionic Framework中得到2个

时间:2017-12-15 02:08:48

标签: angular cordova typescript ionic-framework

typescript编译器给我这个错误

  

typescript:src / pages / login / login.ts,第33行               预计0个参数,但得到2。         L32:this.auth.loginAPI(this.registerCredentials)         L33:.subscribe(response => {

使用此代码(2个文件):

// auth-provider.ts
public loginAPI(credentials: {email:string,password:string}) {
  return this.http.post(this.apiUrl,data);
}

// login.ts
this.auth.loginAPI(this.registerCredentials)
  .subscribe(response => { 
    console.log(response);
  }, err => {
    console.log(err);
  });

有趣的是代码可以工作(我编辑任何文件,我的离子服务重新加载,页面渲染没有任何问题)。

有什么想法吗?

环境 cli包:(/ usr / local / lib / node_modules)

@ionic/cli-utils  : 1.19.0
ionic (Ionic CLI) : 3.19.0

全球套餐:

cordova (Cordova CLI) : 7.0.1

本地包裹:

@ionic/app-scripts : 3.1.5
Cordova Platforms  : ios 4.4.0
Ionic Framework    : ionic-angular 3.9.2

系统:

Node  : v8.9.3
npm   : 5.5.1
OS    : macOS High Sierra
Xcode : Xcode 9.2 Build version 9C40b

2 个答案:

答案 0 :(得分:6)

问题在于loginAPI函数定义。 将返回类型添加到Observable< any>让编译器高兴并解决了这个问题。

// auth-provider.ts
public loginAPI(credentials: {email:string,password:string}):Observable<any> {
  return this.http.post(this.apiUrl,data);
}

我仍然不太了解为什么,但至少现在它编译没有任何错误。

答案 1 :(得分:1)

为了处理这个问题,你可以创建一个类,如下所示,

public class credentials export {
   email : string;
   password: string;
}

然后,

public loginAPI(inCredentials : credentials ) {
  return this.http.post(this.apiUrl,data);
}