tengo este codigo
interface AccountData { country: number |null; } const [accountData, setAccountData] = useState<AccountData>({ country:null });Hasta que asignemos un valor a un país, puede ser una cadena indefinida, nula o vacía.
Luego configuro el valor del país así
const handleChange = (e: number) => { if(!isNaN(e)) { setAccountData({ country: e }); } };Y luego trato de pasar el valor del país a una función que requiere el parámetro como un número, me sale este error
<Button small onClick={() => { handleSubmit(accountData.country); }} > save </Button>El tipo 'null' no se puede asignar al tipo 'number'.
Lo que tiene sentido mecanografiado asume que esto puede ser null a veces. Entonces verifico si esto es un número antes de pasar a la función como esta
onClick={() => { if(!isNaN(accountData.country)) { handleSubmit(accountData.country); } }}Pero el error sigue ahí. ¿Cómo puedo arreglar esto?
Sin ver su función handleSubmit , supongo que está anotado con number . Existe la posibilidad de que el país sea null cuando se envíe. Por lo tanto, TypeScript no está contento con esto.
Algo como esto podría ayudar:
const handleSubmit = (input: number | null) => { // stuff }Puede usar as palabra clave para especificar number de tipo para el country .
<Button small onClick={() => { handleSubmit(accountData.country as number); }}>save</Button>Referencia: Tipo Estrechamiento
Si Counrt su valor es una cadena undefined , null o empty , también puede definir any . Que puede aceptar undefined , null o empty .
Más información sobre mecanografiado
interface AccountData { country: number | null | any; } const [accountData, setAccountData] = useState<AccountData>({ country:null }); const handleSubmit = (input: number | null | any) => { // do some stuff here }