在Typescript中声明并引用对象本身,是否可能?

在Typescript中声明并引用对象本身,是否可能?,typescript,Typescript,我声明一个类型并一次性实例化它。 现在我想引用另一个属性(y=x+1),如下所示: private data: { x: number; y: number; } = { x: 1, y: x + 1, // "Cannot find name 'x'.ts(2304)" }; 有可能吗 更新 请注意,该语句包含一个声明,然后是一个实例化。仅实例化对象。 产生差异的原因:生成的javascript可能是相同的,并且所选的编辑器可能

我声明一个类型并一次性实例化它。
现在我想引用另一个属性(
y=x+1
),如下所示:

private data:
  {
    x: number;
    y: number;
  } = {
    x: 1,
    y: x + 1, // "Cannot find name 'x'.ts(2304)"
  };
有可能吗

更新

请注意,该语句包含一个声明,然后是一个实例化。仅实例化对象。
产生差异的原因:生成的javascript可能是相同的,并且所选的编辑器可能表现类似;但是,当人类阅读和编辑代码时,声明和实现之间存在差异。实际用例比这个问题中的示例更复杂

回答

这个问题要求声明和实例化,由@AlekseyL回答。在评论中。链接答案复制到此处:

const data:
  {
    x: number;
    readonly y: number;
  } = {
  x: 1,
  get y() {
    return this.x + 1
  }
};```
这是你想要的吗

创建返回所需值的函数。在这种情况下,
x+1
var data=function(){
var x=1;
变量y=x+1;
返回{
x:x,
y:y
}
}();

console.log(data)
并不能真正解决这个问题。由于这个问题之外的原因,我想在声明和实例化之间有明显的区别。@LosManos如果原因影响到哪些答案是可以接受的,那么它就不能合理地排除在这个问题之外。写答案的人需要知道,这样才能给出正确的答案,而不会胡乱猜测,也不会浪费他们自己或你的时间。@fredrik我的意思是,有很多解决方案可以使具有属性和函数的数据结构成为可能。但是我提出的语法正是基于当前的架构师、当前的开发人员和其他软价值观。是否
y
始终是“计算的”或者仅在实例化时?@AlekseyL.Always computed.您可以执行类似于如果我有您这样的操作right@AlekseyL.Please将您的代码复制到答案中,以便我可以这样打勾。@AlekseyL。请将您的代码复制为答案。