Error de TypeScript que no entiendo: Property 'nombre' does not exist on type 'never'
Holaaa! Llevo una hora con esto y me da vergüenza preguntarle otra vez a mi tech lead jajaja. Tengo esto en un componente: const [usuarios, setUsuarios] = useState([]) useEffect(() => { fetch('/api/usuarios') .then(res => res.json()) .then(data => setUsuarios(data)) }, []) return ( <ul> {usuarios.map(u => <li key={u.id}>{u.nombre}</li>)} </ul> ) Y TypeScript me marca en rojo u.id y u.nombre : Property 'nombre' does…
Accepted answer
¡Hola Lucía! Pregunta súper válida 💜 Cuando haces useState([]) TypeScript tiene que adivinar el tipo con lo único que le das: un array vacío. Un array vacío no tiene elementos, entonces TS dice "esto es un array de... nada", o sea never[]. Y claro, "nada" no tiene propiedad nombre. La solución es decirle qué va a haber dentro: interface Usuario { id: number nombre: string } const [usuarios, setUsuarios] = useState<Usuario[]>([]) Con eso ya te autocompleta u.nombre, y si escribes u.nombr te avisa. Bonus: res.json() devuelve any, así que si quieres ser estricta pon .then((data: Usuario[]) => setUsuarios(data)), o mejor valida con zod. Tu tech lead tiene razón con lo del any jaja