Permite acceder a propiedades de objetos, elementos de arrays y llamar funciones sin causar errores si alguna propiedad es null
o undefined
.
Usa el operador ?.
.
📚 Encadenamiento Opcional con Objetos
Ejemplo Tradicional:
let name = undefined;
if (user.details && user.details.name && user.details.name.firstName) {
name = user.details.name.firstName;
}
Refactorizado
const name = user.details?.name?.firstName;
📦 Encadenamiento Opcional con Arrays
Ejemplo Tradicional:
const data = {
temperatures: [-3, 14, 4]
};
let firstValue = undefined;
if (data.temperatures) {
firstValue = data.temperatures[0];
}
Refactorizado
const firstValue = data.temperatures?.[0];
🚀 Encadenamiento Opcional con Funciones
Ejemplo Tradicional:
const person = {
age: 43,
name: "Sam"
};
let upperCasedName = person.name;
if (person.name) {
upperCasedName = person.name.toUpperCase();
}
Refactorizado
const upperCasedName = person.name?.toUpperCase();
🚫No Usar Encadenamiento Opcional para Asignaciones
El encadenamiento opcional solo se usa para lectura, no para asignaciones directas.
const settings = {};
// ❌ Error de Sintaxis
settings?.theme = "dark";
Uso Correcto con &&
:
const settings = {};
settings?.theme && (settings.theme = "dark");
console.log(settings); // {}
💡Estrategias Alternativas para Asignaciones
Uso de ??
para Valores Predeterminados:
type Settings = {
theme?: string | null;
};
const settings: Settings = {};
settings.theme = settings.theme ?? "dark";
console.log(settings); // { theme: "dark" }
Última actualización