Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度类型编号不可分配给if语句的左侧_Javascript_Angular_Typescript_Rxjs_Observable - Fatal编程技术网

Javascript 角度类型编号不可分配给if语句的左侧

Javascript 角度类型编号不可分配给if语句的左侧,javascript,angular,typescript,rxjs,observable,Javascript,Angular,Typescript,Rxjs,Observable,我正在从一个php调用返回一个数字。当我在subscribe函数中返回值时,控制台正在正确打印数字。当我试图运行if语句来处理返回时,我在代码中收到了一个错误,我不知道如何修复。我环顾四周,但找不到这个问题的答案 这一切都发生在订阅函数内部。我无法引用订阅之外的变量accountStatus this.apiService.checkAccountStatus().subscribe((accountStatus)=>{ console.log("user accou

我正在从一个php调用返回一个数字。当我在subscribe函数中返回值时,控制台正在正确打印数字。当我试图运行if语句来处理返回时,我在代码中收到了一个错误,我不知道如何修复。我环顾四周,但找不到这个问题的答案

这一切都发生在订阅函数内部。我无法引用订阅之外的变量accountStatus

this.apiService.checkAccountStatus().subscribe((accountStatus)=>{
      console.log("user account", accountStatus);
      if(accountStatus = 0)
      {
        //account doesn't exist
        console.log("user doesn't exits.", accountStatus);
      }
      if(accountStatus = 1)
      {
        //account does exist
        console.log("user does exist.", accountStatus);
      }
    })
我收到的调试错误:

Type 'number' is not assignable to type 'Account_Info'.ts(2322)
Account_Info是我用来访问数据库的ts文件的名称。在my apiService.checkAccountStatus()函数中,它是这样的:

checkAccountStatus(){
  return this.httpClient.get<Account_Info>(`${this.PHP_API_SERVER}/api/checkaccount.php`, {withCredentials: true});
}
checkAccountStatus(){
返回this.httpClient.get(`this.PHP\u API\u SERVER}/API/checkaccount.PHP`,{withCredentials:true});
}

欢迎任何建议。谢谢大家!

首先,改变可观察对象的类型

checkAccountStatus(){
  return this.httpClient.get<number>(`${this.PHP_API_SERVER}/api/checkaccount.php`, {withCredentials: true});
}

您需要像上面的代码一样定义accountStatus的类型i define accountStatus:any,使用此代码并告诉我它是否工作如果
Account\u Info
是一个接口,它实际上不是一个数字。您可以将其记录到控制台,因为您可以记录任何内容。您不能在TypeScript中检查类型
帐户\u Info
是否为数字。同样在
if
子句中,您是赋值,而不是比较值。您必须使用以下各项:

/。。。
如果(+accountStatus==0)console.log(“用户不存在”,accountStatus)
如果(+accountStatus==1)console.log(“用户确实存在”,accountStatus);
//...
accountStatus
前面加一个加号的原因是JavaScript中的一元运算符
+
试图将其后的值转换为数字。更多信息:


N.B.:只有当值确实是一个数字时,这才有效。否则,
+accountStatus
将是
NaN
(不是数字)。

谢谢。是你的回答和其他人的评论。我的最后一个代码是
this.apiService.checkAccountStatus().subscribe((accountStatus:any)=>{console.log(“用户帐户”,accountStatus);if(accountStatus==0){//account不存在console.log(“用户不退出”),accountStatus);}if(accountStatus==1){//account does exists console.log(“user does exists.”,accountStatus);}}}})
尝试不使用类型any。在这种情况下,如果您完全确定后端返回一个数字,那么更改类型checkAccountStatus(){return this.httpClient.get(
${this.PHP_API_SERVER}/API/checkaccount PHP
,{withCredentials:true});}this.apiService.checkAccountStatus().subscribe((accountStatus:number)=>{一般来说,你也应该使用严格相等
===
运算符进行比较。严格相等和不严格之间有什么区别?我对此不熟悉。检查这个答案:谢谢。这是你的答案,也是其他人的评论。我最后的代码是
this.apiService.checkAccountStatus().subscribe((accountStatus:any)=>{console.log(“用户帐户”,accountStatus);if(accountStatus==0){//account不存在console.log(“用户不存在”,accountStatus);}if(accountStatus==1){//account确实存在console.log(“用户确实存在,accountStatus);})
this.apiService.checkAccountStatus().subscribe((accountStatus:number)=>{
      console.log("user account", accountStatus);
       if(accountStatus === 0)  // you have (accountStatus = 0)
          {
            //account doesn't exist
            console.log("user doesn't exits.", accountStatus);
          }
          if(accountStatus === 1) // you have (accountStatus = 1)
          {
            //account does exist
            console.log("user does exist.", accountStatus);
          }
})
this.apiService.checkAccountStatus().subscribe((accountStatus:any)=>{
      console.log("user account", accountStatus);
      if(accountStatus = 0)
      {
        //account doesn't exist
        console.log("user doesn't exits.", accountStatus);
      }
      if(accountStatus = 1)
      {
        //account does exist
        console.log("user does exist.", accountStatus);
      }
    })