login() { this.auth.login(this.userName, this.password).subscribe((_: any) => { this.router.navigateByUrl('app', {replaceUrl: true}); }); }No sé por qué recibo este error, probé algunas cosas pero nada funciona.
Este es mi método auth.login. No sé dónde podría estar el error. Soy bastante nuevo en Angular:
login(username: string, password: string) { let userObject: User; if (username === 'user' && password === 'user1234') { userObject = { name: 'Max Mustermann', userRole: 'USER', }; } else if (username === 'admin' && password === 'admin1234') { userObject = { name: 'Erika Mustermann', userRole: 'ADMIN', }; }else{ return this.assertNever(); } return of(userObject).pipe( tap(user => { Storage.set({ key: TOKEN_KEY, value: JSON.stringify(user) }); this.currentUser.next(user); }) ); } Al eliminar el método assertNever(), aparece este error en el último return :
La variable 'userObject' se usa antes de ser asignada. ts(2454)
Agregar algunos tipos de devolución a sus funciones lo ayudará en el futuro. Por lo que puedo ver, su función this.assertNever(); siempre arroja pero se declara (o se infiere) para volver nulo.
Cambie su declaración para volver never y TS reconocerá que esta función no volverá.
void = devuelve, pero no devuelve un valor
nunca = no regresará / el valor de retorno no será observable
Obtiene ese error porque su método de 'inicio de sesión' debe tener una ruta que no tiene un "retorno" .
De hecho, los otros caminos deberían devolver un "Observable", lo que suena bien.
EDITAR:
Ahora que puedo ver su código, parece que el error se ubica en esta línea:
return this.assertNever();¿Podría el método "assertNever ()" devolver "vacío"/nulo/nada?
De todos modos, para evitar el error, ¿podría falsificar un usuario ficticio y devolverlo cambiando esta línea:
else { \\return this.assertNever(); userObject = { name: 'Fake', userRole: 'NOLOGGED', }; }