2017-07-01 12 views
0

を聞く:私はコードで状態としてだから私は、この抽象クラスを持つ抽象変数の変化

export abstract class Foo { 
    // Can't do this, but I want to make sure the implementation sets "name" 
    //abstract name: string; 

    set name(value: string) { 
     // Do things 
    } 
} 

、私はFooのクラス内の属性nameに加えられた変更を聞きたいのですが、にそれが抽象的に保ちますプログラマが属性をどこかに設定/実装していることを確認してください。

プログラマが変数を設定しているか、少なくともその変数を宣言する必要があるかどうかを確認する方法はありますか?

これが可能かどうかはわかりません。

答えて

1

あなたが受け取るprotectedコンストラクタを持つことができname

abstract class Foo { 
    protected constructor(public name: string) {} 
} 

またはあなたはそれを返す抽象メソッドを宣言することができます

abstract class Foo { 
    public name: string; 

    protected constructor() { 
     this.name = this.getName(); 
    } 

    protected abstract getName(): string; 
} 

あなたが別の場所/時間でgetNameを呼び出すことができますがコンストラクタの代わりに。

関連する問題