Typescript:从常量中的子对象访问父属性

时间:2017-12-08 21:20:26

标签: typescript

在这个打字稿/ Javascript代码中:

var v= {
  x: 1,
  y: {
    z: v.x,
  }
}

const c = {
  x: 1,
  y: {
    z: c.x,
  }
}

v是可以的,因为var是JavaScript并且它没有抱怨,但是当在c中分配z时,由于在声明之前使用了z,因此存在错误。

我的问题:有没有办法获得它? (我知道我可以用c声明另一个x并在其中分配它的值,但我的意思是更直接的东西)

2 个答案:

答案 0 :(得分:1)

两个示例都会抛出一个错误,因为在评估表达式vv.x尚不存在:

<强> VAR

&#13;
&#13;
var v= {
  x: 1,
  y: {
    z: v.x, // TypeError
  }
}
&#13;
&#13;
&#13;

<强>常量

&#13;
&#13;
const c = {
  x: 1,
  y: {
    z: c.x, // TypeError
  }
}
&#13;
&#13;
&#13;

在初始化 c之后,您不得不求助于添加对象:

&#13;
&#13;
const c = {
  x: 1
}

c.y = { z: c.x };

console.log(c.y.z);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

一种可能性是让z懒惰:

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());