1. ホーム
  2. interface

[解決済み] インターフェース定義でゲッター/セッターを使用することは可能ですか?

2022-09-02 09:33:20

質問

今現在 TypeScript では、インターフェイスの中で get/set メソッド (アクセサ) を使用することができません。 例えば

interface I {
      get name():string;
}

class C implements I {
      get name():string {
          return null;
      } 
}

また、TypeScriptではクラスメソッドにArray Function Expressionを使用することができません。 例えば..:

class C {
    private _name:string;

    get name():string => this._name;
}

インターフェース定義でゲッターとセッターを使用する方法は他にありますか?

どのように解決するのですか?

インターフェイス上でプロパティを指定することはできますが、このようにゲッターとセッターを使用するかどうかを強制することはできません。

interface IExample {
    Name: string;
}

class Example implements IExample {
    private _name: string = "Bob";

    public get Name() {
        return this._name;
    }

    public set Name(value) {
        this._name = value;
    }
}

var example = new Example();
alert(example.Name);

この例では、インターフェイスはクラスがゲッターとセッターを使うことを強制していないので、代わりにプロパティを使うことができました(下の例)。

interface IExample {
    Name: string;
}

class Example implements IExample {
    // this satisfies the interface just the same
    public Name: string = "Bob";
}

var example = new Example();
alert(example.Name);

そして最後に => はクラスメソッドには使えません。 でのディスカッションを開始します。 で議論を始めてください。以下はその例です。

class Test {
    // Yes
    getName = () => 'Steve';

    // No
    getName() => 'Steve';

    // No
    get name() => 'Steve';
}