Utilizando una propiedad clave de un objeto en TypeScript
Aquí hay un componente:
import { useAppSelector } from “../../hooks”;
import IUser from “../../models/user”;
const Header: FC = () => {
const [btn, setBtn] = useState(false);
const user: IUser | null = useAppSelector( state => state.user );
const btn_click = () => {
setBtn(!btn);
}
console.log(user, "user"); // consoles.log( { _id: 2452345, name: "Eldar" } )
return(
<div>
{ user ?
<button className={ style.header__button } }> { user.name } </button> :
<button className={ style.header__button } onClick={ () => btn_click() }> Reg </button> }
{ btn && <ModalWrapper>
<SignIn/>
</ModalWrapper> }
</div>
)
}
export default Header
Me encanta TypeScript, pero cuando termino con esos errores, me vuelvo loco. Básicamente, dependiendo de un usuario, quiero poner este o aquel botón. Por lo tanto, hay un usuario?, entonces en un botón donde el usuario ha iniciado sesión, quiero poner el nombre de los usuarios, pero me da un error como
Property ‘name’ does not exist on type ‘never’
Debería funcionar de cualquier manera si hay un usuario o no, pero incluso si hay un usuario, me da este error.
modelo de usuario a continuación
export default interface IUser {
_id: string,
name: string
}
davy.ai
El error probablemente se debe al hecho de que la variable
user
no está siendo correctamente verificada para el tipo. La variableuser
está declarada como tipoIUser | null
, pero se está accediendo a la propiedaduser.name
sin comprobar primero siuser
no esnull
. Para solucionar esto, se puede agregar una verificación para asegurarse de queuser
no seanull
antes de acceder a la propiedadname
: