Typescript: Accediendo a una propiedad del padre desde un objeto hijo en una constante
En este código de Typescript/Javascript:
var v= {
x: 1,
y: {
z: v.x,
}
}
const c = {
x: 1,
y: {
z: c.x,
}
}
v está bien porque var es JavaScript y no se queja, pero al asignar z en c hay un error debido al uso de z antes de su declaración.
Mi pregunta: ¿hay una manera de obtenerlo? (Sé que podría declarar otra x fuera de c y asignarle su valor dentro, pero me refiero a algo más directo)
Respuesta #1
Ambos ejemplos generarán un error ya que v aún no existe en el momento en que se evalúa la expresión v.x:
var
var v= {
x: 1,
y: {
z: v.x, // TypeError
}
}const
const c = {
x: 1,
y: {
z: c.x, // TypeError
}
}Tendrás que recurrir a agregar el objeto después de que c se inicialice:
const c = {
x: 1
}
c.y = { z: c.x };
console.log(c.y.z);Respuesta #2
Una posibilidad es hacer que z sea perezoso:
var v = {
x: 1,
y: {
z: () => v.x,
}
}
const c = {
x: 1,
y: {
z: () => c.x,
}
}
console.log(v.y.z());
console.log(c.y.z());