簡體   English   中英

將只讀變量傳遞給父構造函數 | 打字稿

[英]Passing a readonly variable to parent constructor | Typescript

我是 TypeScript 的新手,我正在嘗試將readonly變量傳遞給父類的構造函數:

abstract class ChildClass extends ParentClass {
    private readonly READ_ONLY: number= 1;

    public constructor(foo: string)
        // 'super' must be called before accessing 'this' in the constructor of a derived class. ts(17009)
        super(foo, this.READ_ONLY); 
    }
}

ChildClass 將被更多的類擴展,因此是抽象的。

有什么辦法可以在super構造函數中傳遞只讀變量嗎?

這與readonly無關。

在調用超類的構造函數之前,您不能引用this的任何屬性。 所以你必須以不同的方式做到這一點。

也許READ_ONLYParentClass的受保護屬性,然后子類可以為其設置新值。

class ParentClass {
  protected readonly READ_ONLY: number = 1;
  constructor(foo: string) {
    console.log('used READ_ONLY: ', this.READ_ONLY)
  }
}

class ChildClass extends ParentClass {
  protected readonly READ_ONLY: number = 2;
}

new ParentClass('foo') // used READ_ONLY: 1
new ChildClass('foo') // used READ_ONLY: 2

這是可行的,因為protected僅意味着對外部private ,但對子類public

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM