angular - Svojstvo ne postoji na tipu
Suočavam se sa čudnim problemom. Pa moja funkcija authenticateUser vraća niz poput ovog
{
success: false,
msg: "invalid password"
}
Ali kada pokušavam provjeriti je li success == false, dobijem pogrešku da takvo svojstvo ne postoji na tipu Objects
this.authService.authenticateUser(user).subscribe(data=>{
if(data.success){//here need to check response for success
console.log(data)
this.authService.storeUserData(data);
this.router.navigate(['/user']);
}else{
this.router.navigate(['/login']);
}
Pokušao sam koristiti primjere iz drugih vodiča, ali još uvijek nema rješenja
Odgovor #1
Imaš 2 načina da to učiniš:
Opcija 1 koristi tip any:
this.authService.authenticateUser(user).subscribe((data: any)=>{
if(data.success){//here need to check response for success
console.log(data)
this.authService.storeUserData(data);
this.router.navigate(['/user']);
}else{
this.router.navigate(['/login']);
}
}
Ili to raditi s jakim tipiziranjem {success: boolean, msg: string} ili stvoriti sučelje ovog tipa:
this.authService.authenticateUser(user).subscribe((data: {success: boolean, msg: string}) =>{
if(data.success){//here need to check response for success
console.log(data)
this.authService.storeUserData(data);
this.router.navigate(['/user']);
}else{
this.router.navigate(['/login']);
}
}
Odgovor #2
Nisam previše upoznat s Angularom, ali to je zato što podaci nisu pravilno tipizirani, možete to popraviti korištenjem kastanja ili zaštite tipa.
const hasSuccess = (something: any): something is {success: boolean} {
return "success" in something;
}
if(hasSuccess(data) && data.success) ...
