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