angular - La propiedad no existe en el tipo 'string'.ts(2339)
Entonces aquí está mi código y tengo este error y no entiendo por qué. Necesito algo de ayuda aquí... No sé por qué está pasando esto: La propiedad no existe en el tipo 'string'.ts(2339) en: return users.find(u => u.userName === user.userName && u.password === user.password) en u.userName y u.password. Por favor, ayuda.
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class AuthService {
constructor() { }
authUser(user: any) {
let users : string[] = [];
if(localStorage.getItem('Users')) {
users = JSON.parse(localStorage.getItem('Users') || '{}');
}
return users.find(u => u.userName === user.userName && u.password === user.password)
}
}
Respuesta #1
cambia como abajo para resolver:
dejar usuarios : any[]=[];
la razón principal es que el string[] no tiene una propiedad como
nombre de usuario o contraseña
sugerencia: hay demasiadas lagunas lógicas en la función authUser, por lo que deberías escribir la función para manejar la lógica de manera más precisa.
Respuesta #2
Como se estableció en otra respuesta, lo has declarado como un array de cadenas, el cual no tiene propiedades como password y username. Lo que deberías hacer, ya que estamos programando con Typescript, es crear interfaces (mi preferencia) y tipar tus datos. Solo un ejemplo de prueba aquí:
export interface MyInterface {
userName: string;
password: string;
}
y la función:
authUser(user: MyInterface) {
let users : MyInterface[] = [];
users = JSON.parse(localStorage.getItem('Users')) || [];
return users.find(u => u.userName === user.userName && u.password === user.password)
}
También revisa la función, puedes simplemente hacer:
users = JSON.parse(localStorage.getItem('Users')) || [];
