2016-04-21 74 views
0

的访问说我有代码打字稿:访问外部`this`在对象文本字段

class A { 
    a = 1; 

    o = { 
     get b() { 
      return this.a; //<-- 
     } 
    } 
} 

this指出,实际上是指o而我真的想访问的A实例。

这是我想要的格式吗? (如果没有创建一个函数和别名)

+1

这不是有效的类语法开始用。在ES2015中,您只能定义类方法,而不是像这样的属性。所有的属性都必须在构造函数中初始化(ES.Next提出了一个“静态”可变槽,但这是一个不同的故事)。 – nils

+0

我不确定你的意思是“*没有创建函数*”。你想要一个吸气剂,对吧? – Bergi

+0

@nils是的,它实际上是TypeScript。我已经确定了标题。我想这可能是在TypeScript中定义属性的方式的限制。 @bergi我的意思是没有在函数范围中包装对象字面值以便别名this。 –

回答

0

我认为这是将最终给你相同的API,但你必须打破了类来完成它:

class o { 
constructor(private owner: t) {} 
get b() { return this.owner.a; } 
} 

class t { 
a = 1 
o = new o(this) 
} 
+0

我喜欢OO的方法:) –

+0

它不流利,但它完成了工作;) – Catalyst