Cuando trato de desestructurar mi objeto de estado en el mecanografiado de reacción, obtengo un error Object is possibly 'undefined' . Si uso el encadenamiento opcional, obtengo este error const newUser: NewUser | undefined Argument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'.
El error se muestra cuando intento desestructurar el objeto RegisterUser(newUser?.email, newUser?.password, newUser?.name, navigate)
Mi código:
type NewUser ={ name: string, email: string, password: string, navigate: string } const Register = () => { const [newUser, setNewUser] = useState<NewUser>() // single object will return const [RegisterUser] = UseFirebase() const navigate = useNavigate() const handleValues = (e: any) => { const field = e.target.name; const value = e.target.value const user: any = { ...newUser } user[field] = value setNewUser(user) } const handleRegister = (e: any) => { e.preventDefault() // ERROR RegisterUser(newUser.email, newUser.password, newUser.name, navigate) // console.log('user name', newUser.name, newUser.email, newUser.password); } .......¿Podría alguien decirme qué tipo de error cometí?
Bueno, en el script mecanografiado para yaa, primero debe verificar que no obtendrá un valor indefinido simplemente haciendo una verificación de condición como esta
const handleRegister = (e: any) => { e.preventDefault() if (newUser?.email && newUser?.password && newUser?.name) { RegisterUser(newUser.email, newUser.password, newUser.name, navigate) } else { // show some error handling here or error to user that he didnt enter value etc } }Si su objeto no está indefinido, debe intentar
RegisterUser(newUser!.email, newUser!.password, newUser!.name, navigate)