2017-07-17 69 views
0

请参考下面无法访问父类的属性打字稿

class x { 
    a = 20; 
    f1(){ 
    console.log("parent > " + this.a); 
    } 
} 
class y extends x { 
    a = 10; 
    f1(x?:number){ 
    console.log("chold > " + this.a); 
    super.f1(); 
    } 
} 
let z = new y(); 
z.f1(); 

的打字稿代码时,我在Chrome运行下面编译的代码,我得到的孩子= 10和父= 10。从“父母”类访问父类属性的正确方法是什么,因为“this”没有接合起作用。

+1

代码工作完美。你只是覆盖成员'a'的价值。没有办法达到'x'中设置的值。 –

+0

所以,我必须先研究基类并相应地设计我的子类,因为如果我在具有相同名称的子类中指定数据成员,它可能会使基类功能瘫痪? – Manish

+0

我不知道你在做什么。但是如果你声明'a'是私有的,那么编译器会试图重新声明它 –

回答

2

从父类访问父类属性的正确方法是什么,因为“this”没有接缝可以工作。

this指向当前实例。 this.a将指向父级和班级中的相同值。基本上a被覆盖,当父母访问this.a时,它访问子属性。

更多

  • 家长的方法是通过super访问甚至重写
  • 父属性后覆盖永久

文档

https://basarat.gitbooks.io/typescript/docs/classes.html