【问题标题】:Typescript Error Expected 0 arguments, but got 2 in Ionic Framework打字稿错误预期 0 个参数,但在 Ionic 框架中得到 2 个
【发布时间】:2018-05-29 05:18:02
【问题描述】:

打字稿编译器给了我这个错误

打字稿:src/pages/login/login.ts,行:33 预期 0 个参数,但得到 2 个。 L32:this.auth.loginAPI(this.registerCredentials) L33: .subscribe(响应 => {

使用此代码(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);
  });

有趣的是代码可以工作(我编辑任何文件,我的 ionic 服务重新加载并且页面呈现没有任何问题)。

有什么想法吗?

环境 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

【问题讨论】:

  • 为了澄清,我尝试传递两个单独的参数,一个类,甚至只有一个参数来测试它,每次我得到相同的编译器错误。甚至 SublimeText 都突出了错误:是不是意味着我们应该换一种方式来做?
  • 编译器报告的问题与 .subscribe 有关,而不是与传递给 loginAPI 的凭据有关。我正在编辑问题以更好地澄清它。

标签: angular cordova typescript ionic-framework


【解决方案1】:

问题在于 loginAPI 函数定义。 将返回类型添加到 Observable 使编译器满意并解决了问题。

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

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

【讨论】:

  • 你找到发生这种情况的原因了吗?
  • @davecar21 在我看来编译器正在强制声明返回类型...
  • 除了使用Observable&lt;any&gt;,还有其他方法吗?
  • @davecar21 取决于函数的返回类型。你想要完成或解决什么?
【解决方案2】:

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

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

然后,

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

【讨论】:

  • 尝试了一个类,一个数组,两个单独的参数...不起作用,每次都出现同样的错误。
  • 数组是什么意思?
  • 我将我在第一篇文章中传递的对象称为数组({email:string,password:string})
  • 我知道,但不管怎样都行不通。即使使用您提出的解决方案,我也遇到了同样的错误
猜你喜欢
  • 2021-03-13
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
相关资源
最近更新 更多