Undefined vs Null en Optional Chaining
Dificultad: Difícil TypeScript advanced coding
type User = { name?: string | null };
const u1: User = { name: undefined };
const u2: User = { name: null };
const u3: User = {};
console.log(u1.name?.length, u2.name?.length, u3.name?.length); 📥 Inputs:
u1 = { name: undefined }, u2 = { name: null }, u3 = {}
❓ ¿Cuál es el output?
Ingresa tu respuesta abajo
💡 Explicación
¡Sorpresa! Aunque u1 tiene 'undefined' explícito, u2 tiene 'null' y u3 está vacío, el operador optional chaining (?.) devuelve 'undefined' en los tres casos. PERO hay una diferencia sutil: u1.name es undefined, u2.name es null, y u3.name es undefined. El ?. corta la cadena en null/undefined y retorna undefined, ocultando la diferencia entre null y la ausencia de propiedad. Este comportamiento sorprende porque null y undefined se tratan igual con ?., pero son distintos sin él.
¿Esperabas ver 'null' en alguno? 🤔 Comenta qué pasaría sin el optional chaining! 💭