私はストア関係関数を定義する親クラスと、ストア上にそのテーブルを定義する子クラスを持っています。親クラスでは、インスタンスのテーブルに接続するsave()
関数を定義していますが、そのテーブルはその子に定義されています。子のtableName
を受け入れるように親のコンストラクタを設定することができたと思っていましたが、this
を参照する前にsuper
を呼び出さなければならないという不満がありました(this
の属性をsuperに渡したい場合でも)。親クラスから子クラスの属性にアクセスできますか?
export class StoredObject {
constructor(private tableName: string) {}
public save() {
store.collection(this.tableName) //...
}
}
と子:
はここに親の私は一つの解決策は、単にthis.tableName
の値を返すgetter関数を作ることです知っている
export class Inventory extends StoredObject {
tableName = "inventory";
constructor(
public myVar //...
) {
super(this.tableName)
}
}
、それはハックようです。私はまた、実際に文字列をsuper
に入れてもよいことを知っています(例えば、Inventory
にはコンストラクタを{ super("inventory") }
としていますが、それは魅力的ではありません)。私はそれを見つけることができないよう
あなたのコードに誤りがあると思います。あなたは変数としてtableNameを決して定義しないので、グローバルスコープにあると信じています。さらにthis.tableNameはスコープに格納されているprivate変数tableNameを参照しません(varを前に置いた場合)。アクセス可能な試してthis.tableName = "目録"。 – Blue