2017-07-17 47 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